我正在研究考试的数组,并且在打印存储在我创建的数组中的值时遇到了一些问题。方向说“声明,创建和初始化一个名为数字的数组,它将保存从键盘输入的10个整数。”我们还应该打印数组以确保值已正确存储。这是我到目前为止的代码:
import java.util.Scanner;
public class ArrayHandout {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
System.out.print("Please enter " + numbers.length + " values:");
for(int index = 0; index < numbers.length; index++)
numbers[index] = input.nextInt();
System.out.println(numbers[index]);
} // end main
} // end class
当我尝试编译时,我收到了这个错误:
1 error found:
File: C:\Users\HiTechRedneck\Desktop\Fall 2013\Computer Science Principles\Exam 3 Review\ArrayHandout.java [line: 12]
Error: cannot find symbol
symbol: variable index
location: class ArrayHandout
我尝试了几种不同的方法来打印它。我尝试使用while循环而不是for循环,当它编译得很好时,我收到了运行时错误
java.lang.ArrayIndexOutOfBoundsException: 10
at Arrays.main(Arrays.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
在添加print语句之前,我能够编译并运行程序而没有错误,但是我需要一种方法来确保输入正确地保存到数组中。任何帮助将不胜感激。
答案 0 :(得分:2)
您需要for
循环中的大括号。
for(int index = 0; index < numbers.length; index++){
numbers[index] = input.nextInt();
System.out.println(numbers[index]);
}
现在编写代码的方式,只有第一行进入循环,该行知道index
变量。但是,下一行已经对index
一无所知,因为它超出了循环范围。
答案 1 :(得分:2)
你的for循环之后忘了那个curley大括号。因此,变量索引超出了范围。
for(int index = 0; index < numbers.length; index++){
numbers[index] = input.nextInt();
System.out.println(numbers[index]);
}
答案 2 :(得分:2)
在打印前关闭循环
System.out.println(numbers[index]); //Here index=10, which is
// OutofBoundsException
答案 3 :(得分:2)
就个人而言,我总是包括大括号,以减少阅读或修改代码时出现混淆的可能性。如果for
语句循环后只有一行,则可以排除大括号。
for(int index = 0; index < numbers.length; index++) {
numbers[index] = input.nextInt();
System.out.println(numbers[index]);
}
有时开始时没有添加大括号,认为for
循环中只有一行代码,但稍后需要在for
内添加另一行代码时循环,他/她添加代码行而不添加大括号 - 程序员得到!虽然留待个人喜好,但一个建议是省略guarded clause&amp;在其他场景中使用大括号。
答案 4 :(得分:1)
import java.util.Arrays;
import java.util.Scanner;
public class NumberReading {
public static int [] readNumsFromCommandLine() {
Scanner s = new Scanner(System.in);
int count = s.nextInt();
s.nextLine(); // throw away the newline.
int [] numbers = new int[count];
Scanner numScanner = new Scanner(s.nextLine());
for (int i = 0; i < count; i++) {
if (numScanner.hasNextInt()) {
numbers[i] = numScanner.nextInt();
} else {
System.out.println("You didn't provide enough numbers");
break;
}
}
return numbers;
}
public static void main(String[] args) {
int[] numbers = readNumsFromCommandLine();
System.out.println(Arrays.toString(numbers));
}
}
答案 5 :(得分:0)
将程序更改为
import java.util.Scanner;
public class ArrayHandout {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numbers = new int[10];
System.out.print("Please enter " + numbers.length + " values:");
for (int index = 0; index < numbers.length; index++) {
numbers[index] = input.nextInt();
}
input.close();
System.out.print("Values in array: ");
for (int n : numbers) {
System.out.print(n + "\t");
}
}
}
答案 6 :(得分:0)
try {
FileUtils.deleteDirectory(context.getCacheDir());
} catch (IOException e) {
// Do some error handling
}
答案 7 :(得分:-1)
import java.util.*;
class printInput{
public static void main(String [] args){
Scanner s = new Scanner(System.in);
String[] a = new String[10];
System.out.println("Enter a String");
for(int i=0; i<a.length; i++){
a[i] = s.nextLine();
}
System.out.println("String entered was");
for(String j: a) //Declare "j" as per the data type you use
{
System.out.print(j);
}
}
}
/* This I have done with String you can also use other data types as per your comfort.*/