Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 嗨,我正试图接受我的程序输入中的数字,但我收到了错误的消息_Java - Fatal编程技术网

Java 嗨,我正试图接受我的程序输入中的数字,但我收到了错误的消息

Java 嗨,我正试图接受我的程序输入中的数字,但我收到了错误的消息,java,Java,我想在这个程序中只接受0、1或2的输入,否则要获得invaild输入,有人能帮忙吗? 我试着把字符串改成双倍,但也不起作用 Scanner da = new Scanner(System.in); String name; int big=0; int[] marks = new int[5]; String getData() { int total=0;

我想在这个程序中只接受0、1或2的输入,否则要获得invaild输入,有人能帮忙吗? 我试着把字符串改成双倍,但也不起作用

Scanner da = new Scanner(System.in);
String name;                          
int big=0;                         
int[] marks = new int[5];              
String getData()
{
    int total=0;                                
    String one="one";                           
    System.out.println("");
    name = da.nextLine();
    System.out.println("");
    big=da.nextInt();
    for(int b=0;b<5;b++)

        System.out.println("+(b+1));
        marks[b]=da.nextInt();
        if(b==4) da.nextLine();  
    if(total>big)  {
        big = total;                      
        return name;                                    
    }
}

您可以简单地循环输入,直到选择了给定的选项,然后继续游戏

while(true){
  System.out.println(" Sciccors (0), Stone(1) or Paper(2)? ");
  scanner= scan.nextLine();
  if( scanner.equals("0") || scanner.equals("1") || scanner.equals("2"))
    break;
}

这是输入验证,当用户尚未输入整数值时,请用户重新输入。我为你写了一个例子:

import java.util.Scanner;

public class Tester {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (!sc.hasNextInt()){
            System.out.println("please enter again");
            sc.next();
        }
        int x = sc.nextInt();
        System.out.println(x);
    }
}
在这种情况下,您可以为输入验证实现这样一个单独的方法

public int getInputInt(Scanner sc, int max, int min) {
        while (sc.hasNext()) {
            if (sc.hasNextInt()) {
                int val = sc.nextInt();
                if (val >= min && val <= max) { 
                    return val;
                }
            } else {
                sc.next();
            }
        }
        return -1;
    }

您的switch语句中是否有一个默认的大小写来处理与任何有效大小写都不匹配的输入?或者您是否更关心如果用户试图键入一个根本不是数字的东西,比如我选择的是Stein,而不是1',会发生什么?因为这会导致一个相当严重的运行时错误。@Roger根据,看起来你毁了你自己的问题。现在被接受的答案没有任何意义。你能恢复原来的问题吗?在它目前的状态下,它不太可能对某人有好处。@GhostCat…我现在已经恢复了原来的状态,你能让我一个人呆着吗????????????????????