2016-05-11 27 views
0

在转移到下一行之前,我怎样才能读取一行整数?从不同的行读入(从std in)整数/整数列表Java

我收到象下面输入(忽略子弹分):

  • 4 -space- - 空间 - 2 - 空间 - - 空间 - - 空间 - 3
  • -space- 84 -space -space- 6
  • 2 -space- -space- -space- 8 -space- -space- 19

其中用于我想在仅行执行操作的整数的每一行。然后我想要获得下一行并在那个上执行操作等等。

我不知道数字之间有多少空格,我目前正在使用Java的扫描器。

+0

你的意思是只读直到整数? –

回答

1

可能有更好的方法,一种可能的方式是将整行读取为单个字符串,然后将每个字符串拆分为空格。这些将是字符串,但您必须将其更改为整数。

Scanner scanner = new Scanner(System.in); 
String str = scanner.nextLine(); 
String[] splitStr = str.split(" "); 

for(String s: splitStr) 
    System.out.println(s); 
+0

谢谢!我用过这个,我的程序正在工作:) – redpanda12

0

我会做这与nextLine()功能和StringTokenizer对象,具有一个ArrayList<Integer[]>沿着存储文本的行:

Scanner sc = new Scanner(/*input source*/); 
StringTokenizer input; 
ArrayList<Integer[]> numbers = new ArrayList<>(); 

try { 
    while (sc.hasNextLine()) { 
     input = new StringTokenizer(sc.nextLine()); 
     Integer[] n = new Integer[input.countTokens()]; 
     for (int i=0; i<n.length; i++) { 
      n[x] = new Integer(input.nextToken()); 
     } 
     numbers.add(n); 
    } 
} catch (NumberFormatException ex) { 
    // do whatever you want here to handle non-integer input 
} 

这将每个单独的线转换成一个单独的Integer阵列,每个阵列都存储在ArrayList中。或者,您可以使用ArrayList<String>并解析代码中其他位置的整数值。

另外,关于while (sc.hasNextLine())零件的注释,如果您的Scanner正在从System.in读取,则不应使用此注释,因为这会导致无限循环。如果您的Scanner正在从System.in读取,您应该a)让用户输入一个特定命令来终止循环,或者b)使用for循环,以便输入固定数量的输入线。