直接复制粘贴的朋友注意包名和自己的类名
解决Java Scanner 读取多个数据 while无限循环读取问题
浅谈Java 按行读取/输出问题
注意:一但读取.next 如int x=s.nextInt()后,下一个int y=s.nextInt()是读取第二次输入的内容,在while循环中也可以这么理解
import java.util.Scanner;
//键盘输入输出
//不论是next nextInt 程序必须读取到一个与字符类型不同的值时才会跳出循环
//while(s.hasNextXxxx) 要准确如果只写hasNext 当输入到一个读取不相符的内容便会异常退出 :fun3
//当写准确后 读取到非next内容便会正常结束,退出循环.:fun6
public class Day001 {
static Day001 dy=new Day001();
public static void main(String[] args) {
// TODO Auto-generated method stub
dy.fun3();
}
//输出一个int 程序结束
private void fun1() {
Scanner s=new Scanner(System.in);
int a=s.nextInt();
System.out.println(a);
s.close();
}
//输出一个字符串 程序结束
private void fun2() {
Scanner s=new Scanner(System.in);
String a=s.next();
System.out.println(a);
s.close();
}
//输出多个int 程序并没有结束
//测试用例:1 2 3 4 5 6 7
//第一行1 2 3 4 5 6 7 第二行7 6 5 4 3 2 1
//第一个enter程序输出第一行结果,第二个enter程序输出第二行结果(每输出一个int 换行)
//测试用例:1 2 3 4 5 r 成功输出1 2 3 4 5 但最终异常报错并推出.
private void fun3() {
Scanner s=new Scanner(System.in);
while(s.hasNext()) {
int a=s.nextInt();
System.out.println(a);
}
s.close();
}
//输出多个String 程序并没有结束
//测试用例:你好 中国
private void fun4() {
Scanner s=new Scanner(System.in);
while(s.hasNext()) {
String a=s.next();
System.out.println(a);
}
s.close();
}
//--------------------------------------------------------------------------------------------------
//NextLine 程序并没有结束
//测试用例:第一行1 2 3 4 5 6 7 第二行7 6 5 4 3 2 1
//结果:第一个enter 第一行:1 2 3 4 5 6 7.第二个enter 第二行:7 6 5 4 3 2 1
//与next的比较:NextLine是一行作为一个整体输出
private void fun5() {
Scanner s=new Scanner(System.in);
while(s.hasNextLine()) {
String a=s.nextLine();
System.out.println(a);
}
s.close();
}
//测试用例:1 2 3 4 5 6 程序并没有运行到sum输出处,而是在while中不断循环
//测试用例:1 2 3 4 5 6 end 程序成功输出sum并退出
private void fun6() {
Scanner s=new Scanner(System.in);
int sum=0;
while(s.hasNextDouble()) {
double a=s.nextDouble();
System.out.println(a);
sum+=a;
}
s.close();
System.out.println("sum: "+sum);
}
}