Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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,我的for循环遇到问题 我的目标是 检查用户输入的是整数而不是字符串 循环6次,每次提示用户输入 使用当前代码,我得到以下输出: Enter integer: a invalid input Enter integer: invalid input Enter integer: invalid input Enter integer: invalid input Enter integer: invalid input Enter integer: invalid input BUI

我的
for
循环遇到问题

我的目标是

  • 检查用户输入的是整数而不是字符串
  • 循环6次,每次提示用户输入
  • 使用当前代码,我得到以下输出:

    Enter integer: 
    a
    invalid input
    Enter integer: 
    invalid input
    Enter integer: 
    invalid input
    Enter integer: 
    invalid input
    Enter integer: 
    invalid input
    Enter integer: 
    invalid input
    BUILD SUCCESSFUL (total time: 3 seconds)
    
    我能够检查用户输入的整数。但是,我的
    for
    循环似乎无法正常工作。我可以请求这方面的帮助吗

    下面是我的代码:

    String a = "";
    int count;
    
    for (count = 0; count < 6; count++) {
        System.out.println("Enter integer: ");
    
        if (keyboard.hasNextInt()) {  
            System.out.println(a + "is correct integer"); 
        }
        else {
            System.out.println("invalid input");
        }
    }
    
    字符串a=”“;
    整数计数;
    用于(计数=0;计数<6;计数++){
    System.out.println(“输入整数:”);
    if(keyboard.hasNextInt()){
    System.out.println(a+“是正确的整数”);
    }
    否则{
    System.out.println(“无效输入”);
    }
    }
    
    试试这个:

    它消耗了错误的线路,并且再次消耗了您的线路

                    String a = "";
        int count;
        Scanner keyboard = new Scanner(System.in);
        for (count = 0; count < 6; count++) {
            System.out.println("Enter integer: ");
    
            if (keyboard.hasNextInt()) {
                a = String.valueOf(keyboard.nextInt());
                System.out.println(a + "is correct integer");
            } else {
                System.out.println("invalid input");
                keyboard.nextLine();
            }
        }
    
    字符串a=”“;
    整数计数;
    扫描仪键盘=新扫描仪(System.in);
    用于(计数=0;计数<6;计数++){
    System.out.println(“输入整数:”);
    if(keyboard.hasNextInt()){
    a=String.valueOf(keyboard.nextInt());
    System.out.println(a+“是正确的整数”);
    }否则{
    System.out.println(“无效输入”);
    keyboard.nextLine();
    }
    }
    
    试试这个:

    它消耗了错误的线路,并且再次消耗了您的线路

                    String a = "";
        int count;
        Scanner keyboard = new Scanner(System.in);
        for (count = 0; count < 6; count++) {
            System.out.println("Enter integer: ");
    
            if (keyboard.hasNextInt()) {
                a = String.valueOf(keyboard.nextInt());
                System.out.println(a + "is correct integer");
            } else {
                System.out.println("invalid input");
                keyboard.nextLine();
            }
        }
    
    字符串a=”“;
    整数计数;
    扫描仪键盘=新扫描仪(System.in);
    用于(计数=0;计数<6;计数++){
    System.out.println(“输入整数:”);
    if(keyboard.hasNextInt()){
    a=String.valueOf(keyboard.nextInt());
    System.out.println(a+“是正确的整数”);
    }否则{
    System.out.println(“无效输入”);
    keyboard.nextLine();
    }
    }
    
    您没有使用任何用户输入,如果您要阅读
    int
    ,则
    a
    应该是
    int
    。我想你想要像这样的东西

    for (int count = 0; count < 6; count++) {
        System.out.println("Enter integer: ");
        if (keyboard.hasNextInt()) {
            int a = keyboard.nextInt();
            System.out.printf("%d is an integer%n", a);
        } else {
            System.out.println("invalid input " + keyboard.nextLine());
        }
    }
    
    for(int count=0;count<6;count++){
    System.out.println(“输入整数:”);
    if(keyboard.hasNextInt()){
    int a=键盘.nextInt();
    System.out.printf(“%d是一个整数%n”,a);
    }否则{
    System.out.println(“无效输入”+键盘.nextLine());
    }
    }
    
    您没有使用任何用户输入,如果您要阅读
    int
    ,则
    a
    应该是
    int
    。我想你想要像这样的东西

    for (int count = 0; count < 6; count++) {
        System.out.println("Enter integer: ");
        if (keyboard.hasNextInt()) {
            int a = keyboard.nextInt();
            System.out.printf("%d is an integer%n", a);
        } else {
            System.out.println("invalid input " + keyboard.nextLine());
        }
    }
    
    for(int count=0;count<6;count++){
    System.out.println(“输入整数:”);
    if(keyboard.hasNextInt()){
    int a=键盘.nextInt();
    System.out.printf(“%d是一个整数%n”,a);
    }否则{
    System.out.println(“无效输入”+键盘.nextLine());
    }
    }
    
    您需要扫描系统中的值,因此请使用导入扫描仪 **

    使用此代码 **

    Scanner s=新的扫描仪(System.in);
    int i;
    字符串a=“”;
    整数计数;
    对于(count=0;count)您需要扫描系统中的值,因此请使用导入扫描仪
    **

    使用此代码 **

    Scanner s=新的扫描仪(System.in);
    int i;
    字符串a=“”;
    整数计数;
    
    对于(count=0;count您必须使用键盘输入,否则它仍将存在于后续循环迭代中

    if(keyboard.hasNextInt())
    {
      // consume the input by calling nextInt()
      System.out.println(keyboard.nextInt() + " is correct integer"); 
    }
    else
    {
      // consume the input by calling next()
      System.out.println("invalid input " + keyboard.next());
    }
    

    您必须使用键盘输入,否则它仍将存在于后续循环迭代中

    if(keyboard.hasNextInt())
    {
      // consume the input by calling nextInt()
      System.out.println(keyboard.nextInt() + " is correct integer"); 
    }
    else
    {
      // consume the input by calling next()
      System.out.println("invalid input " + keyboard.next());
    }
    

    您的代码需要进行以下更改:

  • 为字符串指定输入值:

    if (keyboard.hasNextInt()) {
        a = keyboard.next();
        System.out.println(a + "is correct integer");
    } else {
        a = keyboard.next();
        System.out.println("invalid input");
    }
    
  • 正确初始化键盘变量:

    Scanner keyboard = new Scanner(System.in);
    
  • 这个问题可能会有帮助
    .

    您的代码需要进行以下更改:

  • 为字符串指定输入值:

    if (keyboard.hasNextInt()) {
        a = keyboard.next();
        System.out.println(a + "is correct integer");
    } else {
        a = keyboard.next();
        System.out.println("invalid input");
    }
    
  • 正确初始化键盘变量:

    Scanner keyboard = new Scanner(System.in);
    
  • 这个问题可能会有帮助 .

    用于(int i=0;i<6;i++){
    扫描仪输入=新扫描仪(System.in);
    System.out.println(“输入整数:”);
    char value=input.nextLine().charAt(0);
    if(字符isDigit(值)){
    System.out.println(值+“是正确的整数”);
    }否则{
    System.out.println(值+无效输入);
    }
    }
    
    用于(int i=0;i<6;i++){
    扫描仪输入=新扫描仪(System.in);
    System.out.println(“输入整数:”);
    char value=input.nextLine().charAt(0);
    if(字符isDigit(值)){
    System.out.println(值+“是正确的整数”);
    }否则{
    System.out.println(值+无效输入);
    }
    }
    
    谢谢Jens。如果用户输入字符,我现在可以提示他输入另一个输入。但是,当他输入Int时,循环仍然出现故障。它给出的输出与不提示用户输入另一个输入相同。@RUiHAO:我已更改了答案。请再试一次。我想你应该将
    下一行
    更改为
    下一行
    ,因为se
    nextLine
    将首先读取剩余的换行符,然后在下一次迭代中读取无效的输入。这“浪费”一次交互。谢谢Jens。如果用户输入一个字符,我现在可以提示他输入另一个输入。但是,当他输入一个Int时,循环仍然出现故障。它给出了相同的输出,即不提示用户输入另一个输入。@RUiHAO:我已经更改了答案。请重试。我想你应该将
    nextLine
    更改为
    next
    ,因为
    nextLine
    将首先读取剩余的换行符,然后在下一次迭代中读取无效的输入。这“浪费”了一次迭代。他的代码示例中的
    keyboard
    变量已经是扫描仪。他的代码示例中的
    keyboard
    变量已经是扫描仪。“-1”不是有效的整数?这很遗憾:(.“-1”不是一个有效的整数吗?很遗憾:(。这对我来说很有效。我很困惑。在其他代码中,当我在上一个正确的输入之后输入错误的输入时,我会遇到输入不匹配异常(在正确的输入之后输入错误的输入)