Я новичок в Java и пытаюсь создать интерактивную игру. Я мог бы сделать это в одном классе, но недавно я узнал, как использовать два класса, поэтому я хотел попробовать. Во всяком случае, кажется, что мой сканер в моем втором классе (тунца) почему-то не работает. Я попытался сделать это с if и if else, но это не сработало (и да, я использовал '.equals' не '==' для параметров операторов if). Я законно застрял и нуждаюсь в помощи. Я искал ответы на Stack, но не нашел ни одной проблемы. Скажите, пожалуйста, что не так с этой частью кода, так как это, вероятно, логическая ошибка. Если это дубликат, пришлите мне ссылку на ответ, и я заберу это. КОД: ПЕРВЫЙ КЛАСС:
import java.util.Scanner;
class hand {
public static void main(String[] args) {
tuna opObject = new tuna();
//creating input
Scanner input = new Scanner(System.in);
//instructions
System.out.println("This is an interactive game. You are a traveler and have come across this strange hotel. Type in 'go' to begin.");
// Initializing game
if(input.nextLine().equals ("go")) {
System.out.println("A smiling, some what tall fellow in a red suit walks up to you.'Welcome to the amazing, KingstonTraveler Hotel! How may I serve you traveler?'");
}
System.out.println("Will you a) punch him b) 'I would like a room' c) DIE! ");
opObject.options();
}
}
SECOND CLASS (сканер не работает):
import java.util.Scanner;
public class tuna {
Scanner input = new Scanner("System.in");
public String answer = input.nextLine();
public void options() {
switch(answer){
case "a": System.out.println("answer a");
break;
case "b": System.out.println("answer b");
break;
case "c": System.out.println("answer c");
}
}
}
Проблема в классе тунца:
Scanner input = new Scanner("System.in");
Это создает сканер, который сканирует только на строку "System.in". Если вы удалите "
, вы заметите, что вам нужно ввести что-то до запуска вашей программы. Это связано с тем, что атрибуты (в этом случае input
) определяются, когда создается соответствующий объект (т.е. первая строка в main
методе). вы хотите что-то вроде этого:
import java.util.Scanner;
public class Tuna { // Classes should always begin with an uppercase letter
// Moved object attributes into method
public void options() {
// Now input is read if options() gets called
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
switch(answer) {
case "a":
System.out.println("answer a");
break;
case "b":
System.out.println("answer b");
break;
case "c":
System.out.println("answer c");
}
input.close(); // Close stream when we are done
}
}
new Scanner(System.in)
сnew Scanner("System.in")