Java 使用while循环时无法获取用户输入
我有下面的代码,它应该接受用户输入并将其存储在数组中,我只是想知道为什么它不允许我输入任何数字 输入部分应该在if语句中吗?还有,让它正常工作的最佳方法是什么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
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;
}
}