#Scanner的应用和进阶DAY3

#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类,其中输出也不一样;

  1. next类 只要得到有效字符后有空格就做为结束或者分隔符识别,而nextLine以回车键作为结束符(即nextLine可以输出空格。
  2. next类只有读到有效字符后才会结束输入,对于输入有效字符前有空格next会将空格去掉,而nextLine得到空格就会输出空格。
  3. 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

注:练习的时候存在的问题:

  1. 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(布尔表达式):

  1. 只要布尔表达式成立则一直循环。
  2. 让布尔表达式效则结束循环。
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循环

  1. while先判断后执行。

  2. do{

}while,则是先执行后判断(也就是说dowhile至少走了一次 )

For循环

  1. for循环支持迭代
  2. for(初始化,布尔式,更新)
  3. x.for快捷
  4. 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

  1. break跳出循环,不终止程序。(离职)

  2. 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保证了换行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值