Want to improve this question? Update the question so it's on-topic for Stack Overflow на русском.
Closed 9 месяцев назад.
Не могу исправить ошибку из-за сканнера в методе "nacistVolbu()", но она работает правильно, если не использовать метод "upravitZaznam()". Подскажите пожалуйста почему.
public class alp_taskC {
private static final Scanner sc = new Scanner(System.in);
public static void main(String[] args) throws IOException {
// hlavni ridici smycka programu
boolean konecProgramu = false;
while (!konecProgramu) {
// vypsat menu
vypisHlavniMenuProgramu();
// nacist volbu uzivatel
int volbaUzivatele = nacistVolbu();
// provest akci pozadovanou uzivatelem
switch (volbaUzivatele) {
case 0:
konecProgramu = true;
break;
case 2:
upravitZaznam();
break;
default:
System.out.println("Zadana neplatna volba");
}
}
}
private static void vypisHlavniMenuProgramu() {
System.out.println("");
System.out.println("Hlavni menu programu");
//System.out.println("1. Pridat zaznam zaku");
System.out.println("2. Upravit nektere casti zaznamu zaku"); //исправить список в файле
//System.out.println("3. Odstranit nektere ze zaznamu zaku");
//System.out.println("4. Zobrazit seznam");
//System.out.println("5. Vytvorit novou sadu zaznamu");
System.out.println("0. Konec programu");
}
private static int nacistVolbu() {
int volba = -1;
System.out.print("Zadej zvolenou polozku menu: ");
try {
volba = sc.nextInt();
sc.nextLine();
} catch (InputMismatchException e) {
// neplatna volba
volba = -1;
}
// finally {
// sc.nextLine();
// }
return volba;
}
// private static ArrayList<String> lidi = new ArrayList<String>();
// private static ArrayList<Integer> znamka = new ArrayList<Integer>();
private static void upravitZaznam() {
Scanner scan = new Scanner(System.in);
try {
System.out.println("Jaky radek chcete zmenit?");
int radek = scan.nextInt() - 1;
new alp_taskC().zmenitRadek("ibrayev/src/seznamZaku.txt", radek);
} catch (InputMismatchException e) {
System.out.println("Opraveno");
}
scan.close();
}
private void zmenitRadek(String file, int line) {
Scanner scan = new Scanner(System.in);
System.out.println("Zmenit na: ");
String newLine = scan.nextLine();
scan.close();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String temp = "";
String[] result = null;
int pocetRadku = 0;
try {
int iter = 0;
while ((temp = br.readLine()) != null) pocetRadku++;
br = null;
br = new BufferedReader(new FileReader(file));
result = new String[pocetRadku];
while ((temp = br.readLine()) != null) {
if (iter != line) result[iter] = temp;
else result[iter] = newLine;
iter++;
}
} catch (IOException e) {
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
PrintWriter pw = new PrintWriter(new FileWriter(file));
int i = 0;
while (pocetRadku != 0) {
pw.println(result[i]);
i++;
pocetRadku--;
}
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
В блоке finally читаете следующую строку с какой целью? Она всегда выполняется, даже если там ничего нет. Блок finally выполняется всегда независимо есть ошибка или нет.
Нашел ответ как исправить данную ошибку. Я соединил методы "upravitZaznam()" и "zmenitRadek()".
public static void upravitZaznam(){
Scanner scan = new Scanner(System.in);
System.out.println("Jaky radek chcete zmenit?");
int radek = scan.nextInt() -1;
System.out.println("Zmenit radek na: ");
String newLine = scan.next();
BufferedReader buffReader = null;
try {
buffReader = new BufferedReader(new FileReader("ibrayev/src/seznamZaku.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String temp = "";
String[] result = null;
int howRows = 0;
try {
int iter = 0;
while ((temp = buffReader.readLine()) != null) howRows++;
buffReader = null;
buffReader = new BufferedReader(new FileReader("ibrayev/src/seznamZaku.txt"));
result = new String[howRows];
while ((temp = buffReader.readLine()) != null) {
if (iter != radek) result[iter] = temp;
else result[iter] = newLine;
iter++;
}
} catch (IOException e) {
e.printStackTrace();
}
try {
buffReader.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
PrintWriter pw = new PrintWriter(new FileWriter("ibrayev/src/seznamZaku.txt"));
int i = 0;
while (howRows != 0) {
pw.println(result[i]);
i++;
howRows--;
}
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
не подскажите как в функции getWebResourceResponse получить доступ к POST Данным?
Добрый день подскажите пожалуйста пытаюсь собрать vuejs проект и при сборке выдаёт ошибку, откатывал проект до предыдущего состояния когда...
Попробовал модуль: https://githubcom/PNKBizz/vue-yandex-map, но он не поддерживает KML импорт, решил попробовать по примеру: https://tech
Требовалось воссоздать принцип игры Сапер