这里有这样一个题目:
输入 A、B,输出 A+B。输入的第一行包括两个整数,由空格分隔,分别表示 A、B。输出一行,包括一个整数,表示 A+B 的值。
题目十分简单,但在 JAVA 中运行程序时,第一次竟然出错了。枉为软件学院学子!!
我的想法是输入一个字符串,然后用 split()函数分割字符串。起初的代码是这样的:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
String s = scanner.next();
String[] str = s.split(" ");
int a = Integer.parseInt(str[0]);
int b = Integer.parseInt(str[1]);
int r = a + b ;
System.out.print(r);
}
}
在输入框中输入
12 34
结果报错了,数组越界。
测试发现 srt[0]的值是有的,str[1]没有值。这是为什么呢?然后我把 scanner.next()改成了 scanner.nextline(),这次运行结果就对了。
出错的原因在于,空格是字符串的终结符,scanner.nextline()的作用是读取一行字符串,而 scanner.next()的作用是读取一个字符串。所以第一次运行时只有 str[0] 有值。
确定了空格是字符串的终结符之后,程序就不必要写得这么啰嗦了。
可以这样改:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
System.out.println(a + b);
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于