java输入数字,将其存入数组

import java.util.Scanner;

public class tt {
public static void main(String[] args) {
while (true){
System.out.println("请输入数字,将其存入numbers[]数组中");
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
ArrangedNumbers arrangeNumbers = new ArrangedNumbers();
int[] numbers = arrangeNumbers.deleteSpaces(line);
for (int i = 0; i < numbers.length ; i++) {
System.out.println("numbers[" + i + "]=" + numbers[i]);
if (line.length()==line.indexOf(" ")) {
break;
}
}
}
}
}

class ArrangedNumbers
{
/**
* 删除字符串前后的空格,得到新字符串
* 并删除新字符串间的空格,将得到的字符串保存到数组中
* 得到整型的数字
*
* @param line 字符串为了得到整型的数字用
* @return 返回integerNumbers[]数组
*/
public int[] deleteSpaces(String line)
{
int[] numbers = new int[line.length()];
int i = 0;
line = line.trim();
int begin = 0;
int end = line.indexOf(" ");
for (; end >= 0 && end < line.length(); begin++)
{ numbers[i++] = Integer.parseInt(line.substring(begin, end));
/*
* 把end的值赋值给begin
*/
begin = end;
/*
* 后面肯定至少有一个空格,去掉
*/
end++;
/*
* 当小于整个长度时
*/
while (end < line.length()) {
/*
* 查看下一个空格的位置
*/
end = line.indexOf(" ", end);
if (end > 0 && line.substring(begin, end).equals(" ")) {
/*
* 如果在begin和end之间存在空格,丢弃这个空格
*/
begin = end;
end++;
} else {
/*
* 如果不是空格或者已经到了字符串结尾,退出while循环
*/
break;
}
}
}
numbers[i] = Integer.parseInt(line.substring(begin));
int[] integerNumbers = new int[i + 1];
for (int j = 0; j < i + 1; j++)
integerNumbers[j] = numbers[j];
return integerNumbers;

}
}
问题:
输入空行时不能退出程序,而且报错?
我觉得是if (line.length()==line.indexOf(" ")) {
break;
}
错误,请问要如何改?

需要的结果:
请输入数字,将其存入numbers[]数组中
1
numbers[0]=1
请输入数字,将其存入numbers[]数组中
4 5
numbers[0]=4
numbers[1]=5
请输入数字,将其存入numbers[]数组中
(当输入空行时退出程序)

第1个回答  2007-12-20
用StringTokenizer这个类比较简单
import java.io.*;
import java.util.*;
public class inputNumIntoArray
{
int numbers[]=new int[20];
int num;

public static void main(String []args)
{
inputNumIntoArray getnum=new inputNumIntoArray();
String line=new String();
DataInputStream read=new DataInputStream(System.in);
try
{
line=read.readLine();
}
catch(IOException ex)
{
System.out.println(ex.toString());
}
for(int i=0;i<line.length();i++)
if(line.charAt(i)<'1'||line.charAt(i)>'9')
{
System.out.println("ERROR!CONTAITN OTHER CHAR!");
return;
}
getnum.getInteger(line);

getnum.output();
}
void getInteger(String line)
{
line=line.trim();
StringTokenizer tokens=new StringTokenizer(line," ");//用空格分割字符口串
int i,n=tokens.countTokens();//获得数字的个数
i=0;
numbers=new int[n];//确定元素的个数
num=n;
while(tokens.hasMoreTokens())
{
numbers[i]=Integer.parseInt(tokens.nextToken());//将字符转换成数字
i++;
}
}
void output()
{
for(int i=0;i<num;i++)
{
System.out.println("numbers["+i+"]="+numbers[i]);
}
}
}本回答被提问者采纳