Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要进行扫描仪检查,以查看输入是否为“;退出;,然后如果它';s不是,接受整数_Java_String_Int - Fatal编程技术网

Java 我需要进行扫描仪检查,以查看输入是否为“;退出;,然后如果它';s不是,接受整数

Java 我需要进行扫描仪检查,以查看输入是否为“;退出;,然后如果它';s不是,接受整数,java,string,int,Java,String,Int,我试图编写一个程序,从用户那里获取一个整数,但如果用户输入“quit”,也会结束程序。当我运行程序时,当我输入“退出”时,它会工作,但当我开始输入整数时,我会得到一个空行。如果我第二次输入整数,它会工作。我尝试了一些针对类似问题的建议,包括try/catch、将输入解析为Integer、启动空白扫描器#nextLine或扫描器#nextInt(并在所有这些选项之间来回切换)。这是我最近尝试的一个例子。如有任何见解,将不胜感激 int colInput; System.out.p

我试图编写一个程序,从用户那里获取一个整数,但如果用户输入“quit”,也会结束程序。当我运行程序时,当我输入“退出”时,它会工作,但当我开始输入整数时,我会得到一个空行。如果我第二次输入整数,它会工作。我尝试了一些针对类似问题的建议,包括try/catch、将输入解析为Integer、启动空白扫描器#nextLine或扫描器#nextInt(并在所有这些选项之间来回切换)。这是我最近尝试的一个例子。如有任何见解,将不胜感激

    int colInput;

    System.out.println(", please pick a column in which to place your token (1-8).");
    System.out.println("(Type 'quit' to exit the game or 'restart' to start over.)");
    System.out.print("Column Choice: ");

    Scanner selectCol = new Scanner (System.in);

    try {
        if (selectCol.next().equals("quit"))
            Connect4.close();
    }
    finally {
        colInput = selectCol.nextInt();
    }

在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”

if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值

要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为

if (selectCol.next("quit"))

这样,您就可以使用Scanner类提供的方法

在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”

if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值

要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为

if (selectCol.next("quit"))

这样,您就可以使用Scanner类提供的方法

在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”

if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值

要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为

if (selectCol.next("quit"))

这样,您就可以使用Scanner类提供的方法

在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”

if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值

要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为

if (selectCol.next("quit"))


这样,您就可以使用Scanner类提供的方法

您正在使用selectCol.next()消费下一个令牌。最后一个块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我不能对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到和我在原始帖子中所说的相同的问题。请看我提出的答案。我在原始帖子中说解析是我已经尝试过的事情之一。不过,我还是(再次)尝试了你的建议,以防我在尝试之前做了一些稍微不同的事情。不幸的是,我仍然得到同样的结果。我现在知道我在应用你的解决方案时哪里出错了。它确实起作用了。非常感谢。我会的