Java 使用while循环时无法获取用户输入

Java 使用while循环时无法获取用户输入,java,arrays,loops,input,while-loop,Java,Arrays,Loops,Input,While Loop,我有下面的代码,它应该接受用户输入并将其存储在数组中,我只是想知道为什么它不允许我输入任何数字 输入部分应该在if语句中吗?还有,让它正常工作的最佳方法是什么 import java.util.*; public class fun_with_loops { static Scanner scan = new Scanner(System.in); public static void main (String[] args) throws java.io.IOExcept

我有下面的代码,它应该接受用户输入并将其存储在数组中,我只是想知道为什么它不允许我输入任何数字

输入部分应该在if语句中吗?还有,让它正常工作的最佳方法是什么

import java.util.*;

public class fun_with_loops {

    static Scanner scan = new Scanner(System.in);

    public static void main (String[] args) throws java.io.IOException
    {
        int[] numbers = new int[10];
        int numberSize = 0;
        System.out.print("Enter a few numbers please\n");



        while (numbers.length < 10)
        {
            int input = scan.nextInt();
            if (input != 0)
            {
                numbers[numberSize] = input;
                numberSize++;
            }
            else
            {
                break;
            }

        }

    }  
}
import java.util.*;
公共课乐趣与循环{
静态扫描仪扫描=新扫描仪(System.in);
公共静态void main(字符串[]args)引发java.io.IOException
{
整数[]个数=新整数[10];
int numberSize=0;
System.out.print(“请输入一些数字”);
while(数字。长度<10)
{
int input=scan.nextInt();
如果(输入!=0)
{
数字[numberSize]=输入;
数字化++;
}
其他的
{
打破
}
}
}  
}

问题

循环控件上的以下表达式始终计算为false:

while (numbers.length < 10)

因为它是根据输入的数量增长的。

正如Am_I_所述,您正在对一个不会改变的值使用while循环。我不确定在这种情况下是否需要使用while。由于要循环特定次数,因此可能需要使用for循环。如果次数取决于数组的大小,仍然可以用数组长度(numbers.length)替换“10”

for(int i;i<10;i++)
{
int input=scan.nextInt();
如果(输入!=0)
{
数字[numberSize]=输入;
数字化++;
}
其他的
{
打破
}
}
希望有帮助

关于何时使用每个循环的简短摘要:


当然,编码时总是取决于你的目标,所以如果你不是编码的人,有时很难说哪一个是最好的。

因为数组被初始化为大小10,所以长度总是10。需要使用计数器变量。代码如下:

static Scanner scan = new Scanner(System.in);

public static void main (String[] args) throws java.io.IOException
{
    int[] numbers = new int[10];        
    System.out.print("Enter a few numbers please\n");


    int count = 0;
    while (count < 10)
    {
        int input = scan.nextInt();
        if (input != 0)
        {
            numbers[count] = input;
            count++;
        }
        else
        {
            break;
        }

    }
static Scanner scan=新扫描仪(System.in);
公共静态void main(字符串[]args)引发java.io.IOException
{
整数[]个数=新整数[10];
System.out.print(“请输入一些数字”);
整数计数=0;
同时(计数<10)
{
int input=scan.nextInt();
如果(输入!=0)
{
数字[计数]=输入;
计数++;
}
其他的
{
打破
}
}

属性
length
返回数组的大小,而不是数组中存在的元素数。您需要自己跟踪数组中的元素数

    for(int eleCount = 0; eleCount < 10; eleCount++) 
    {
        int input = scan.nextInt();
        if (input != 0)
        {
            numbers[eleCount] = input;
        }
        else
        {
            break;
        }

    }
for(int-eleCount=0;eleCount<10;eleCount++)
{
int input=scan.nextInt();
如果(输入!=0)
{
数字[eleCount]=输入;
}
其他的
{
打破
}
}

因为您的numbers.length始终为10,所以它永远不会小于10。您需要使用count变量将用户输入10次以存储在数组中。
static Scanner scan = new Scanner(System.in);

public static void main (String[] args) throws java.io.IOException
{
    int[] numbers = new int[10];        
    System.out.print("Enter a few numbers please\n");


    int count = 0;
    while (count < 10)
    {
        int input = scan.nextInt();
        if (input != 0)
        {
            numbers[count] = input;
            count++;
        }
        else
        {
            break;
        }

    }
    for(int eleCount = 0; eleCount < 10; eleCount++) 
    {
        int input = scan.nextInt();
        if (input != 0)
        {
            numbers[eleCount] = input;
        }
        else
        {
            break;
        }

    }