Java

Проблема в коде, цикл пропускает строчку и продолжает свою работу без сбоев в остальном.

Изучаю java и по традиции решил написать сам калькулятор. Все шло хорошо до одного момента, когда цикл начал пропускать одну строку, а конкретно строчку со сканером строки, он ее просто пропускает и перескакивает в начало цикла, компилятор не ругается и собирает все нормально! Если ее поставить в начале цикла, то сканер отлично работает!
Во-первых, по этикету Java переменные не принято называть русскими буквами, названия классов пишутся с большой буквы. Во-вторых, советую считывать символ без сканера, а методом System.in.read(). И вместо nextLine() следует использовать next(). Ваш код (или мой) будет таким:

import java.io.*;
import java.util.*;

public class Calk{
public static void main(String args[]) throws IOException {
Scanner in = new Scanner(System.in);
int a, b, res = 0; //объявление первого, второго чисел и результата
char d; //для выбора действий

while(true){
System.out.println("Введите первое число:");
a = in.nextInt();
System.out.println("Введите второе число:");
b = in.nextInt();
System.out.println("Выберите действие (+, -*, /) :");
d = (char) System.in.read(); //чтение d
switch (d){
case '+':
res = a+b;
break;
case '-':
res = a-b;
break;
case '*':
res = a*b;
break;
case '/':
res = a/b;
break;
}
System.out.println("Ответ: "+res);
System.out.println("Посчитать что-нибудь ещё?");
String ans = in.next();
if(ans.equals("Нет")){
System.out.println("Ваш ответ 'НЕТ', спасибо за использование нашего калькулятора!");
break;
}
}
}
}
Евгений Чисников
Евгений Чисников
215
Лучший ответ
Есть такое, сталкивался кажись в С++
Там загвоздка в том, что толь не видит конец строки толь что то ему еще не нравится, поэкспериментируй с вставкой пустых строк writeln(" ");
Как то я решил эту проблему, но уже не помню в точности как.
СМ
Саня Мальцев
68 751
А где тут вопрос, програмист?
Невидимка ......... что не так наверно написал
Дмитрий Аксенов Вопрос в том, что не так с циклом или вообще со строкой
Дмитрий Аксенов Почему именно эту строку цикл пропускает и как это исправить
Дмитрий Аксенов Программист, это вопрос или утверждение?
вы з дубу рухнули, считывать символ с помощью сканера?

а вообще - не знание документации, не освобождет от отвественности
прочитайте об next и nextLine, как они работают.
Дмитрий Хан
Дмитрий Хан
8 005