Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto

流程控制

用户交互Scanner类

  • 实现程序和人的交互

  • java.util.Scanner

  • Scanner 类 获取用户的输入

  1. next() 获取下一个字符
  2. nextLine()获取下一行

next()

以检测到用户输入的空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止。

所以next()不能得到带有空格的字符串

hasNext()

用来检测是否还有下一个输入,返回布尔值

close()

用于使用完毕Scanner对象后,关闭输入流

package scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args){

       //创建一个扫描对象
       // 先new一个Scanner 参数为System.in  :
       // new Scanner(System.in);  按alt+enter 自动创建本地变量
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next()方法接收");
        //输入hello world  只能接收到hello 因为中间有空格

        //判断用户后面还有没有输入字符
        if(scanner.hasNext()==true){
            //使用next()方法接收
            String str=scanner.next();//输入hello world
            System.out.println("输入内容为"+str);//只能接受到hello
        }

        scanner.close();//用完scanner要关闭,节省资源

        //凡是属于IO流的类要养成用完就关掉的习惯
        }
}

####nextLine();

以检测到用户输入回车enter 为结束符,可以获得空格。

hasNextLine()

用来检测是否还有下一行输入,返回布尔值

package scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine()接受");
        if(scanner.hasNextLine()==true){
            String str=scanner.nextLine();//输入hello world
            System.out.println("输出的内容为:"+str);//接收到hello world
        }

        scanner.close();
    }
}

常规还是用nextLine(),并且一般不用判断是否后面还有数据,用一个字符串对象接收nextLine()获取的值

public class Demo03 {
    public static void main(String[] args) {
        //从键盘接受(可以不判断用户是否还有下一个输入)
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据:");

        String str = scanner.nextLine();

        System.out.println("您输入的内容为:\n"+str);

        scanner.close();
    }
}

接受指定类型的数据——nextInt()nextDouble()

package scanner;
import java.util.Scanner;
public class Demo04 {
    public static void main(String[] args) {
		//新建一个扫描器对象
        Scanner scanner=new Scanner(System.in);
        int i=0;
        float f=0.0f;//记住 float 类型要末尾加 f与 double区别

		
        System.out.println("请输入整数:\n");
        //接收一个整数,如果不是整数就不会接收
        if(scanner.hasNextInt()){
            i=scanner.nextInt();
            System.out.println("整型数据"+i);
        }
        else{
            System.out.println("你输入的不是整数");
        }
        
		//接收一个单精度浮点数,如果不是就不会接收
        System.out.println("请输入小数:\n");
        if(scanner.hasNextFloat()){
            f=scanner.nextFloat();//如果此处输入了整数,会自动转换为浮点数
            System.out.println("小数数据"+f);
        }
        else{
            System.out.println("你输入的不是小数");
        }

 scanner.close();
    }
}

一个小案例
输入多个数据,计算总和,平均数。每输入一个数字用回车确认,输入非数字结束。

package scanner;
import java.util.Scanner;
public class Demo05 {
    public static void main(String[] args){
        
        System.out.println("请输入数据");
        Scanner scanner = new Scanner(System.in);

        //求和
        double sum=0;
        //计数
        int m=0;

        //通过循环判断是否还有输入,并对每一次输入进行求和统计
        while(scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m++;
            sum=sum+x;//sum+=x
            System.out.println("你已经输入"+m+"个数,当前和为:"+sum+",当前平均值为:"+sum/m);
        }
        System.out.println("你一共输入"+m+"个数");
        System.out.println(m+"个数的和为"+sum);
        System.out.println(m+"个数的平均数为"+sum/m);

        scanner.close();

程序的结构

  • 顺序结构

  • 选择结构(分支结构)

    • if-else

    • if——else if——else if——else if——else

      (else必须在 else if 之后)

  • switch-case

public class Demo06 {
    public static void main(String[] args){

        char grade='M';

        switch(grade){
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            default:
                System.out.println("未知等级");
            case 'D':
                System.out.println("不及格");
                break;
//switch的每种情况顺序是不影响的,程序会自动匹配;
//匹配不到时会选择default
//只有遇到break才退出,不然向下继续执行
//efault中没有break,程序也会继续向下执行
        }
    }
}
  • switch支持String字符串常量匹配——可以用“名字”作为匹配项

  • 字符串的本质还是数字

  • switch后面的括号内只能用常量,不能是变量


反编译

IDEA自带反编译方法

.java——编译后——.class文件(字节码文件)——反编译(使用IDEA)——.java

具体方法如下

请添加图片描述
请添加图片描述

循环结构——功能:迭代

  • while 用于不知道循环次数,有时候也用于死循环——监听,检查

  • for 用于已知循环次数——最有效,最灵活

要注意程序执行顺序
for(初始化循环变量;条件判断;自增自减){循环体}

  1. 最先初始化(仅第一次)
  2. 然后条件判断
  3. 然后循环体
  4. 最后自增自减,然后下一轮条件判断
  • for(;;)三个参数可以分别没有,也可都没有——死循环


小练习
输出1-1000内能被5整除的数,每行仅输出3个

public class Demo08 {
    public static void main(String[] args){
        for (int i = 0; i < 100; i++) {
            if(i%5==0){
                System.out.print(i+"\t"); 
                //每输出一个数隔开一个tab
            }
            if(i%5*3==0){   
                System.out.println();
                //没输出三个数,输出一个换行
                //也可以System.out.print("\n");
            }
        }
    }
}

println和print的区别,前者会自动换行


小练习:
for循环打印九九乘法表

public class Demo09 {
    public static void main(String[] args) {
        //九九乘法表
        for (int i = 1; i < 10; i++) {
            for(int j= 1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j);
                System.out.print("\t");
            }
            System.out.println();
        }
    }
}

增强for

  • 用于遍历数组、对象

  • IDEA快捷键——对象.for

  • 格式
    for(临时变量类型 变量名 :需要遍历的数组或对象){循环体操作}

    public class Demo10 {
        public static void main(String[] args) {
            int[] numbers={10,20,30,4,50};//数组的定义
            for(int x:numbers){    
                System.out.println(x);
            }
        }
    }
    

判断字符串是否与另一个字符串相等
(仅仅比较值是否相等,不能比较引用)

str.equals(“hello”)


break,continue

  • break——终止循环,退出

  • continue——不执行循环内continue后面的语句,跳过本轮循环,继续下一次循环


goto关键字”在java中的影子
Java中本来没有goto 关键字——用标签来实现跳转,通过continue跳转到指定标签位置(仅作了解——不建议使用)

以下程序再最外层循环设置了标记outer,方便continue跳出

public class Demo11 {
    public static void main(String[] args) {
       outer: for(int i=1;i<20;i++){
            for(int j=2;j<i/2;j++){
                if(i%j==0){ //此处求质数的算法再理解一下 备注到下方
                    continue outer;
                }
            }
        }
    }
}

notes:
质数是大于1的自然数中,只能被1和本身整除的数


小练习:
打印如图所示三角形 在这里插入图片描述

  • 思路:最外层循环控制换行,先打印左边空白倒着的半三角,再打印左边一半的 * 三角,最后打印右边一半的 * 三角。
public class Demo12 {
    public static void main(String[] args) {     
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >=i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <=i; j++) {
                System.out.print("*");
            }
            for (int j = 1; j <=i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

快捷打开window绘图软件
(win+R——mspaint)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fortunate.F

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值