Вход сканера не работает (Java)?

1

Я новичок в 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");
        }
        }
    }
  • 8
    Сравните new Scanner(System.in) с new Scanner("System.in")
  • 0
    забыл упомянуть проблему, я не мог ничего ввести после опций a, b и c
Показать ещё 5 комментариев
Теги:
java.util.scanner

1 ответ

3
Лучший ответ

Проблема в классе тунца:

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
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню