0

我正在尝试通过扫描一行来添加数字。我希望在按下“ENTER”后不久就可以计算出答案。我应该为分隔符传递什么参数。

import java.io.*;
import java.util.*;
class add {
   public static void main(String[] args) throws IOException {
      int b=0;
      List<Integer> list  =  new ArrayList<Integer>();
      System.out.println("Enter the numbers");
      Scanner sc = new Scanner(System.in).useDelimiter(" ");
      while(sc.hasNextInt())
      {  
      list.add(sc.nextInt());
       }
      for(int i=0;i<list.size();i++) {
         b += list.get(i);
      }
      System.out.println("The answer is" + b);
   }
}
4

3 回答 3

5

简单地写

Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
    list.add(sc.nextInt());
}

这将在输入第一个非整数后立即计算结果......


如果你真的只想读取一行输入,你需要这样做:

Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
for (String token : line.split("\\s+")) {
    list.add(Integer.parseInt(token));
}
// your for loop here...
于 2013-05-18T11:22:30.840 回答
0

您正在向列表中添加一项,然后您的循环停止条件是i >= list.size(); 是 0。这不是你想要的,list.size()你想试试

int amount = in.nextInt();
for (int i = 0; i < amount; i++)

然后你可能想使用添加项目到列表中list.add(in.nextInt());

于 2013-05-18T11:25:31.447 回答
0
import java.io.*;
import java.util.*;
class add {
   public static void main(String[] args) throws IOException {
      int b=0;
      List<Integer> list  =  new ArrayList<Integer>();
      System.out.println("Enter the numbers");
      Scanner sc = new Scanner(System.in).useDelimiter("[\r\n/]");
      while(sc.hasNextInt())
      {  
      list.add(sc.nextInt());

      }
      for(int i=0;i<list.size();i++) {
         b += list.get(i);
      }
      System.out.println("The answer is" + b);
   }
}
于 2014-03-12T16:21:44.363 回答