Проблем с използването на команда от конзолата в Java
Здравейте, колеги!
Имам си аз един код, в който искам да кажа да приема user input, докато не получи командата "End."
В C# му казваш while (console.ReadLine != "End.") и се приключва.
В Java пробвах по няколко начина, но всеки път като напиша числа и накрая сложа командата, то просто ми дава грешка.
List<Integer> numbers = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);
String in = "";
do{
numbers.add(input.nextInt());
}
while(!(input.nextLine().equals("End.")));
Това е кода. Пробвах да присвоя input.nextLine() в специален Стринг, за да видя какво ще се получи. Оказва се, че при всяка итерация стринга си остава "", независимо, че би трябвало да може да чете и числата. Къде бъркам? Благодаря предварително!
Благодаря много! Веднага се реши проблема. Даже научих parseInt() метода, което е бонус. Още един въпрос: Защо когато напиша while(input.nextLine() != "End.");
ефекта се различава от while(!(input.nextLine().equals("End.")));
и задачата не работи?
Стринговете, както и другите обекти (които не са примитивни типове като числа), по принцип се сравняват с equals() метод. В C# за удобство е овъррайднат оператора ==, за да може по-лесно да се сравняват, за Java просто не е направено и трябва да се има предвид, че == между стрингове не работи, а връща дали два стринга са еднакви по референция, т.е. дали са един и същи обект.