java - 扫描仪输入不起作用(Java)?

标签 java java.util.scanner

我是 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();
        }
    }

第二类(扫描仪不工作):

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");

这会创建一个Scanner, that scans only on the String "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
    }
}

关于java - 扫描仪输入不起作用(Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29584063/

相关文章:

java - 当扫描模式时,如何在字符串中检查 float 范围?

java - Scanner.nextLine 输入跳过

java - 如何让java扫描器类从cmd读取文件作为参数

java - 将 Blob 从 Java 存储到 BD : Data size bigger than max size for this type when is clearly not

java - 使用ajax发送数据到jsp页面并打开

java - Spring Boot ERP系统最佳删除操作策略

java - Json、正则表达式、java。如何替换仅出现一次的子字符串

java - 扫描仪读取大文件

java - 如何从 WakefulBroadcastReceiver 启动 IntentService

java - 调试 Java 代码时如何使用 Scanner 类对象设置变量的值?