对于输入,主要用到Scanner的方法,包括:
Scanner.hasnext()等判断是否有下一个字符;
Scanner.next(),
Scanner.nextInt()获取下一个字符(token);
Scanner.nextLine()将扫描往前进一行,并将跳过的这一行输入返回;
记得导入包
import java.util.Scanner;
分别读取每行中每个字符
1. 字符较少
实例
输入
1 5
10 20
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a+b);
}
}
}
2 指定读取行数
实例
输入
2
1 5
10 20
基本同上,只是在循环前单独获取行数参数。后面的循环可以用for(行数固定),也可以用while。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a+b);
}
}
}
3 字符数量较多
3.1 每行第一个字符表示后面字符的数量
示例
输入
4 1 2 3 4
5 1 2 3 4 5
输出
10
15
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
if(n == 0){
break;
}else{
int sum = 0;
for(int i=0; i<n; i++){
sum += in.nextInt();
}
System.out.println(sum);
}
}
}
}
3.2 每行字符数量不等
输入
1 2 3
4 5
0 0 0 0 0
输出
6
9
0
用正则将整行分割保存,可以用char[],也可以用String[]。
再遍历字符数组求和,记得类型转换。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
String[] str = in.nextLine().split(" ");
int sum = 0;
for(int i=0; i<str.length; i++){
sum += Integer.valueOf(str[i]);
}
System.out.println(sum);
}
}
}
本文介绍了在在线判题系统(OJ)中,使用Java处理输入输出时遇到的常见问题。针对字符数量的不同情况,如字符较少、指定读取行数以及字符数量较多的场景,提供了详细的解决方案。例如,当每行第一个字符指示后续字符数量时,如何正确读取并计算总和。
3339

被折叠的 条评论
为什么被折叠?



