我想从控制台读取五个数字。要将输入字符串转换为每个数字的int [x],我尝试使用for循环。但事实证明,#1增量是死代码,#2我的数组没有初始化,即使我刚刚做了。 我是第一次参加Java练习,很乐意听到一些建议。
我的代码:
public static void main(String[] args) throws IOException {
System.out.println("Type in five Numbers");
int [] array;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
for(int x=0; x<5; x++){
String eingabe = br.readLine();
array[x] = Integer.parseInt(eingabe);
break;
}
reserve(array); }
答案 0 :(得分:1)
首先,你没有初始化你的数组,你只是声明一个数组变量(命名数组)。我强烈建议在继续阅读之前阅读并练习这个基本的Java概念,否则你以后可能会感到困惑。您可以阅读有关术语声明,初始化和作业here的更多信息。
Andrew指出,另一个问题是你在循环的第一次迭代中使用了关键字break
。这个关键字终止了一段代码,所以你的循环只运行一次然后退出。
使用扫描仪可以大大简化此代码。扫描程序从指定位置读取输入。扫描程序的构造函数接受两个输入:System.in
,用于计算机上的默认输入设备(键盘),或File对象,例如计算机上的文件。
默认情况下,扫描仪的分隔符设置为空白。分隔符指定连续标记之间的边界,因此如果您输入2 3 5 5
,然后运行循环并调用scanVarName.nextInt()
方法,它将忽略空格并处理该单个中的每个整数line作为自己的标记。
因此,如果我理解正确,您想要读取用户的输入(可能会输入整数),并且您希望将它们存储在整数数组中,对吗?如果您知道用户将输入多少个整数,则可以使用以下代码执行此操作。您可以先提示他们告诉您他们计划输入多少个整数:
// this declares the array
int[] array;
// declares and initializes a Scanner object
Scanner scan = new Scanner(System.in);
System.out.print("Number of integers: ");
int numIntegers = scan.nextInt();
// this initializes the array
array = new int[numIntegers];
System.out.print("Enter the " + numIntegers + " integers: ");
for( int i = 0; i < numIntegers; i ++)
{
// assigns values to array's elements
array[i] = scan.nextInt();
}
// closes the scanner
scan.close();
然后,您可以使用for-each循环遍历数组中的项目并将其打印出来以确认上述代码是按预期工作的。