- 多组数据输入
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine()){
String [] s=sc.nextLine().split(" ");
int sum=0;
for(int i=0;i<s.length;i++){
sum=sum+Integer.parseInt(s[i]);
}
System.out.println(sum);
}
}
}
- 先输入有 t 组数据,再输入数据
通过BufferedReader
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
int t = Integer.parseInt(str);
for(int i = 0; i < t; i++) {
String[] str1 = bf.readLine().split(" ");
int sum = 0;
for(int j = 0; j < str1.length; j++) {
sum += Integer.parseInt(str1[j]);
}
System.out.println(sum);
}
}
}
通过Scanner
注:scanner的nextInt和nextLine不能直接连用
问题分析: nextLine()会把 nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
解决办法:
在每一个 nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
//nextInt()后面添加一个nextLine()将去掉的Enter过滤掉
sc.nextLine();
for(int i = 0; i < t; i++) {
String[] str = sc.nextLine().split(" ");
int sum = 0;
for(int j = 0;j < str.length; j++) {
sum += Integer.parseInt(str[j]);
}
System.out.println(sum);
}
}