Java流程控制(一)
Scanner类
-
作用:
-
可以通过Scanner类获取用户输入
Scanner s = new(System.in);//将用户输入赋值给s
-
使用next()或nextLine()方法获取输入的字符串
-
在读取前一般用hasNext()与hasNextLine()判断是否还有 输入的数据
-
用完scanner之后要调用close()方法关掉(节省资源)
public class Demo1 { public static void main(String[] args) { Scanner s = new Scanner(System.in);//将用户输入赋值给s //通过hasNext每次判断是否有句子输入 if(s.hasNext()){ String str = s.next();//识别一句,识别完一句之后光标移动到下一句,当再次用next()时会识别下一句 System.out.println("输出内容为:"+str); } s.close();//用完之后要关掉 } } 输入:sxw 输出: 输出内容为:sxw
public class Demo1 { public static void main(String[] args) { Scanner s = new Scanner(System.in);//将用户输入赋值给s //进行循环,每次判断是否还有句子,当没有句子时结束 while(s.hasNext()){ String str = s.next();//识别一句,识别完一句之后光标移动到下一句,当再次用next()时会识别下一句 System.out.println("输出内容为:"+str); } s.close();//用完之后要关掉 } } 输入:ad fs gg 输出: 输出内容为:ad 输出内容为:fs 输出内容为:gg
-
-
-
方法:
-
next():
- 只有读到有效字符后才能结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。(例:” sss“会成为"sss")
- 对输入有效字符之后遇到的空白,会被作为分隔符或结束符。(例:”a1 b2 c3“会成为"a1" "b2" "c3")
- next()不能得到带有空格的字符串
-
nextLine():
-
以Enter(回车)为结束符,也就是说nextLine()方法返回的是输入字符前的所有字符
-
可以获得空白
public class Demo1 { public static void main(String[] args) { Scanner s = new Scanner(System.in); if (s.hasNext()){ String str=s.nextLine(); System.out.println("输出内容为:"+str); } s.close();//用完之后要关掉 } } 输入:ad fs gg 输出: 输出内容为:ad fs gg
public class Demo2 { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str=s.nextLine(); System.out.println("输出内容为:"+str); s.close();//用完之后要关掉 } } 输入:ad fs gg 输出: 输出内容为:ad fs gg
-
hasNext():判断是否有数据输入
-
hasNextInt():判断是否有整数输入
-
hasNextDouble():判断是否有Double数据输入
-
hasNext..():判断是否有..数据输入(..中可以填入Int、Double等等)
-
next():读字符串(String类型)
-
nextDouble():读Double类型数据
-
nextInt():读Int类型数据
-
next..():读..类型数据
-
例:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果 import java.util.Scanner; public class Demo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double sum = 0; int num=0; //scanner.hasNextDouble()判断是否有Double类型的数据输入,如果不是Doule类型(比如x),则跳出循环 while(scanner.hasNextDouble()){ sum+=scanner.nextDouble(); num++; } scanner.close(); System.out.println("总和为:"+sum); System.out.println("平均数为:"+(sum/num)); } } 输入: 20 30 40 x 输出: 总和为:90.0 平均数为:30.0
-
-