简体   繁体   English

不知道为什么 while 循环不循环

[英]not sure why while loop isn't looping

I am trying to prompt the user to enter 5 integers but it won't loop more than once.我试图提示用户输入 5 个整数,但它不会循环不止一次。 I don't know why this is happening and couldn't resolve the error by myself我不知道为什么会这样,我自己也无法解决错误

Code:代码:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner s= new Scanner(System.in);

        int counter= 0;
        Boolean inputOK;
        int iInput;

        int data[]= new int[5];

       // while (counter<5);

     do {

         System.out.println(" Please enter an integer");

         while (!s.hasNextInt()) {
             System.out.println("Invalid input");
             System.out.println("Please Enter an integer value");
             s.next();}

            iInput=s.nextInt();

             if (iInput < -10 || iInput > 10) {
                 System.out.println("Not a valid integer. Please enter a integer between -10 and 10");
                 inputOK = false;
             } else {
                 inputOK = true;

             }

         System.out.println("before while loop"+ inputOK);
         } while (!inputOK);
        counter++;
        System.out.println("counter value is"+ counter);



     }
}

If you follow your code, you can see that when inputOK is true , there is no loop to get back to.如果你按照你的代码,你可以看到当inputOKtrue ,没有循环可以返回。 It looks like you had some counter in mind, but you ended up not using it.看起来你有一些计数器,但你最终没有使用它。 The following code does what I think you intended with your code:以下代码执行我认为您对代码的意图:

Scanner sc = new Scanner(System.in);
int[] data = new int[5];
for(int i = 0; i < data.length; i++) {
    System.out.println("Please enter an integer.");
    
    // Skip over non-integers.
    while(!sc.hasNextInt()) {
        System.out.println("Invalid input: " + sc.next());
    }
    
    // Read and store the integer if it is valid.
    int nextInt = sc.nextInt();
    if(nextInt < -10 || nextInt > 10) {
        
        // Make the for loop repeat this iteration.
        System.out.println("Not a valid integer. Please enter an integer between -10 and 10.");
        i--;
        continue;
    }
    data[i] = nextInt;
}
for(int i = 0; i < data.length; i++) {
    System.out.println("data[" + i + "] = " + data[i]);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM