Каждый раз, когда вы вызываете метод next () из экземпляра Scanner, он перемещается (другими словами, он дает вам элемент и двигается дальше.
В конкретном примере, вот что произошло:
public static void main(String [] args){
String k = "Bye";
Scanner scnr = new Scanner(k); // scnr is at the start of string k
if (scnr.next().equals("Hi")){ // scnr gives you "Bye" here;
// you compare it with constant "Hi" and
// throw away that variable;
System.out.println("Yes");
}
else if (scnr.next().equals("Bye")){ // here scnr is at the end of string k
// therefore, it can't give you next element
System.out.println("No");
}
else {
System.out.println("Maybe");
}
}
Вот как это исправить:
public static void main(String [] args){
String k = "Hi";
Scanner scnr = new Scanner(k);
String myNextElement = scnr.next();
if (myNextElement.equals("Hi")){
System.out.println("Yes");
}
else if (myNextElement.equals("Bye")){
System.out.println("No");
}
else {
System.out.println("Maybe");
}
}