#Scanner的应用和进阶(8月10改)
Scanner
我们可以用Scanner类来获取用户的输入,其基本语法如下:
Scanner s=new Scanner(System in);
Next和Nextline
通过Scanner类的next()和nextLine来()获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否有输入数据。、
package com.jie.www;
import java.util.Scanner;
public class scanner {
public static void main(String[] args) {
//创建一个扫描器的对象用来接受键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println( "使用next方式接收");
//判断用户有没有用字符串
if(scanner.hasNext()==true){String str=scanner.next();
System.out.println("输入的内容为:"+str);
}
//凡是使用IO流(输入输出)的类如果不关闭会一直占用资源,用完就要关掉。
scanner.close();
}
public static void nextLine() {
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54659:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.scanner
使用next方式接收
hello world
输入的内容为:hello
Process finished with exit code 0
package com.jie.www;
import java.util.Scanner;
public class scanner_nextline {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
if (scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
}
scanner.close();
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54664:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.scanner_nextline
使用nextline方式接收:
hello world
输出的内容为:hello world
Process finished with exit code 0
注意上述两段代码,一个引用了Scanner的next()类一个引用了Scanner的nextLine类,其中输出也不一样;
- next类 只要得到有效字符后有空格就做为结束或者分隔符识别,而nextLine以回车键作为结束符(即nextLine可以输出空格。
- next类只有读到有效字符后才会结束输入,对于输入有效字符前有空格next会将空格去掉,而nextLine得到空格就会输出空格。
- next不能得到带有空格的字符串如上述Hello World。
进阶练习
package com.jie.www;
import java.util.Scanner;
public class scannner_intt {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int a = 0;
float f = 0.0f;
//输入整数,那么
System.out.println("请输入整数:");
if (scanner.hasNextInt()) {
a = scanner.nextInt();
System.out.println("整数数据:" + a);
}
//如果不是整数,那么
else {
System.out.println("输出的不是整数数据");
}
System.out.println("请输入小数:" );
//如果小数,那么
if (scanner.hasNextFloat()) {
f = scanner.nextFloat();
System.out.println("小数数据:" + f);}
//如果不是那么
else {
System.out.println("输出的不是小数数据");
scanner.close();}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54821:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.scannner_intt
请输入整数:
10.1
输出的不是整数数据
请输入小数:
小数数据:10.1
Process finished with exit code 0
要求:输入多个数字,并求其总和与平均数,每输入一个数字用回车键确认,通过输入非数字来结束输入并输出执行结果;
package com.jie.www;
import java.util.Scanner;
public class Scannner_practice {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//和
double sum=0;
//计算输入了多少个数字
int m=0;
System.out.println("请输入数据");
//循环判断是否还有输入,并对里面每次求和进行统计
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;//m=m+1
sum=sum+x;
}
System.out.println(m+"个数和为"+sum);
System.out.println(m+"个数平均值是"+(sum/m));
scanner.close();
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=53728:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.Scannner_practice
请输入数据
10
20
30
x
3个数和为60.0
3个数平均值是20.0
Process finished with exit code 0
注:练习的时候存在的问题:
- Scanner的大小写,大写的Scanner作为保留字
顺序结构
按照基本结构代码一行一行输出出去。
package com.jie.www;
public class Main {
public static void main(String[] args) {
int a = 10;
System.out.println(a);
System.out.println(a + 1);
System.out.println(a + 2);
System.out.println(a + 3);
System.out.println(a + 4);
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54127:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.Main
10
11
12
13
14
Process finished with exit code 0
选择结构(重点)
if语句
package com.jie.www;
import jdk.swing.interop.SwingInterOpUtils;
import java.util.Scanner;
public class ifDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//对于Scanner类这个中这个scanner(名字)定义一个新的Scanner在系统中,
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score > 60)//equals:判断字符串是否相等
{
System.out.println("及格");
} else {
System.out.println("不及格");
scanner.close();
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54361:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.ifDemo01
请输入成绩:
80
及格
Process finished with exit code 0
注:这里易错点,scanner.nextInt 小写的nextInt是int类型对应的,而大写的hasNextInt是boolean对应的,二者作用不一样。后者是方法不是类名
if多选择结构
if 下用else if,进行多选,则程序检测多种情况
package com.jie.www;
import java.util.Scanner;
public class ifDemo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数据:");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜满分");
} else if (score<100&&score>=90) {
System.out.println("A级");
} else if (score<90&&score>=80) {
System.out.println("b级");
} else if (score<80&&score>=60) {
System.out.println("c级");
}else if (score<60) {
System.out.println("不及格");
}else{
System.out.println("成绩不合法");
}
scanner.close();
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54457:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.ifDemo01
请输入数据:
59
不及格
Process finished with exit code 0
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54460:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.ifDemo01
请输入数据:
102
成绩不合法
Process finished with exit code 0
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54476:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.ifDemo01
请输入数据:
100
恭喜满分
Process finished with exit code 0
注:这里错误点在于:在100到九十这个区间逻辑运算符后面 且&&后也要带上变量名score的成绩大于90逻辑才正确。
switch
多选择结构中还有switch else,用于匹配一个值。
package com.jie.www;
public class switchDemo01 {
public static void main(String[] args) {
//
char grade='B';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case'B':System.out.println("良好");
break;
case'C':
case'D':System.out.println("再接再厉");
break;
case'E':
System.out.println("不及格 ");
break;
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54587:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.switchDemo01
良好
Process finished with exit code 0
switch支持byte short int char String,再每一个case后加break则它匹配到一个值就会直接输出,否则穿透每个case,把所有值都输出出来。
while循环
while(布尔表达式):
- 只要布尔表达式成立则一直循环。
- 让布尔表达式效则结束循环。
package com.jie.www;
public class whileDemo01 {
public static void main(String[] args) {int i=0;
while(i <10){
i++;
System.out.println(i);
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=54745:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.whileDemo01
1
2
3
4
5
6
7
8
9
10
若想让程序一直循环不停止则:while(true){}//死循环
do while循环
-
while先判断后执行。
-
do{
}while,则是先执行后判断(也就是说dowhile至少走了一次 )
For循环
- for循环支持迭代
- for(初始化,布尔式,更新)
- x.for快捷
- for(,,,)//无初始化,布尔式,迭代则是死循环
package com.jie.www;
public class forDemon01 {
public static void main(String[] args) {
//计算0到100之间奇数和偶数的和
int a=0;
int b=0;
for (int i = 0; i < 100; i++) {
if (i%2!=0){
a+=i;
} else {
b+=i;
}
}
System.out.println(a);
System.out.println(b);
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=58129:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.forDemon01
2500
2450
Process finished with exit code 0
注:换行 print(x+“\n”)// "\n"补充当前字符串长度到8的整数倍
println(x)每输出一个x就换行
九九乘法表
package com.jie.www;
public class forDemon01 {
public static void main(String[] args) {
//计算0到100之间奇数和偶数的和
for (int a = 1; a <= 9; a++) {
for (int i = 1; i <= a; i++) {
System.out.print(a + "*" + i + "=" +(i*a)+"\t" );
}
System.out.println();
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=50120:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.forDemon01
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
Process finished with exit code 0
增强for循环
package com.jie.www;
public class forDemo02 {
public static void main(String[] args) {
int[] numbers={10,20,30,40,50};//定义了一个数组
for(int x:numbers){
System.out.println(x);
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=56213:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.forDemo02
10
20
30
40
50
Process finished with exit code 0
让把数组里面的数赋值给int x
break和continue
-
break跳出循环,不终止程序。(离职)
-
continue用于循环语句,用于终止某次循环。回到循环开始。(调休) 主要用于跳过一些数据。
作业打印三角形
package com.jie.www;
public class homework44 {
public static void main(String[] args) {
for (int i = 0; i <=5; i++) {for (int j=5;j>=i;j--){
System.out.print("*");
}
System.out.println();
}
}
}
G:\JDK\bin\java.exe "-javaagent:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar=50539:G:\IDEA\IntelliJ IDEA Community Edition 2022.2\bin" -Dfile.encoding=UTF-8 -classpath G:\IDEA\untitled\out\production\untitled com.jie.www.homework44
******
*****
****
***
**
*
//先打一个三角形出来
Process finished with exit code 0
package com.jie.www;
public class homework44 {
public static void main(String[] args) {
for (int a= 1; a<= 5; a++) {
for (int b= 5; b>= a; b--) {
System.out.print(" ");
}for (int b=1;b<=a;b++){
System.out.print("1");
}
for (int b = 1; b<a; b++) {
System.out.print("1");
}
System.out.println();
}
}
}
G:\JDK\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:56037,suspend=y,server=n -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\IdeaIC2022.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "G:\IDEA\untitled\out\production\untitled;G:\IDEA\IntelliJ IDEA Community Edition 2022.2\lib\idea_rt.jar" com.jie.www.homework44
Connected to the target VM, address: '127.0.0.1:56037', transport: 'socket'
1
111
11111
1111111
111111111
Disconnected from the target VM, address: '127.0.0.1:56037', transport: 'socket'
Process finished with exit code 0
println 和print保证了换行