打印用户输入的值并以Java格式存储到数组中

时间:2013-11-17 06:37:02

标签: java arrays

我正在研究考试的数组,并且在打印存储在我创建的数组中的值时遇到了一些问题。方向说“声明,创建和初始化一个名为数字的数组,它将保存从键盘输入的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语句之前,我能够编译并运行程序而没有错误,但是我需要一种方法来确保输入正确地保存到数组中。任何帮助将不胜感激。

8 个答案:

答案 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.*/