2016-10-02 66 views
-4

我想从控制台读取五个数字。要将输入字符串转换为int [x],我尝试使用for循环的每个数字。但事实证明#1增量是死代码和#2我的数组没有初始化,即使我刚刚做。 我在第一次使用Java的做法,很高兴听到一些建议。将输入字符串转换为int数组

我的代码:

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); } 
+3

为什么你在第一次迭代时会突破? – Li357

+1

1)是的,你的数组没有被初始化,'array [x]'如何工作,因为数组没有大小呢? 2)你的循环中有一个break语句,所以它只会运行一次 –

+0

谢谢你的回答。 – obszoenling

回答

1

首先,你没有初始化数组,你只声明一个数组变量(命名的数组)。我强烈建议在继续下一步之前阅读并练习Java的这个基本概念,否则以后可能会感到困惑。您可以阅读更多关于术语声明,初始化和作业here

正如Andrew指出的,另一个问题是您在循环的第一次迭代中使用了关键字break。这个关键字终止了一段代码,所以你的循环只运行一次,然后退出。


使用扫描仪可以大大简化此代码。扫描仪从指定位置读取输入。扫描仪的构造函数接受两个输入:System.in(用于计算机(键盘)上的默认输入设备)或File对象(例如计算机上的文件)。

默认情况下,扫描仪将其定界符设置为空格。分隔符指定连续标记之间的边界,例如,如果输入2 3 5 5,然后运行循环并调用scanVarName.nextInt()方法,它将忽略空格并将该单行中的每个整数视为其自己的标记。

所以,如果我理解正确,你想读取来自用户的输入(谁可能输入整数),并且你想要将它们存储在整数数组中,对吗?如果您知道用户将输入多少个整数,则可以使用以下代码执行此操作。你可以先提示他们告诉你他们打算多少整数进入:

// 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循环通过项目的阵列中运行,并打印出来,确认上面的代码按预期工作。

+0

感谢您的帮助。我只是用你的代码,它运行得非常好。 – obszoenling