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

Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto流程控制用户交互Scanner类实现程序和人的交互java.util.ScannerScanner 类 获取用户的输入next() 获取下一个字符nextLine()获取下一行next()以空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止next()不能得到带有空格的字符串package scanner;import java.util.Scanner;public class Demo01 { public

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

流程控制

用户交互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)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168488.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java 创建新文件_Java创建新文件[通俗易懂]

    java 创建新文件_Java创建新文件[通俗易懂]创建文件是一种非常常见的IO操作,在这一小节中我们将学习如何在java中创建文件的几个方法。在java中创建文件有三种流行的方法,下面将一个一个地来学习。方法一:使用File.createNewFile()方法java.io.File类可用于在Java中创建新文件。当初始化File对象时,需要提供一个文件名,然后调用createNewFile()方法来在Java中创建新文件。如果创建新文件成功,则…

  • Python 生成随机数_python建立随机数列表

    Python 生成随机数_python建立随机数列表记录了生成随机数的几种方式以及生成随机列表的几种方法。

  • 《前端运维》一、Linux基础–10定时任务「建议收藏」

    一、进程管理进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体

  • Make autofill background transparent[通俗易懂]

    Make autofill background transparent[通俗易懂]https://jsfiddle.net/ju3g47jh/14/div.select_custom_background{  background-image:url(http://i.stack.imgur.com/mbisi.png)!important;  width:175px}input{  backgr

  • 网页实时显示时间_html页面布局代码

    网页实时显示时间_html页面布局代码在html页面实时显示系统时间桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可<html><head><metahttp-equiv=”Content-Type”content=”text/html;charset=utf-8″/><title>系统时间</title&gt…

  • 亲身经历从软通外包到华为OD,两者有什么区别?「建议收藏」

    亲身经历从软通外包到华为OD,两者有什么区别?「建议收藏」亲身经历从软通外包到华为OD,两者有什么区别?声明:本人所有言论仅限2021-04当前真实所在的部门情况。序言​ 坐标南京,本人2014年毕业于211本科院校,16年底加入软通动力,20年初转入华为OD。到如今算是经历了完整的OD模式。从被华为沟通加入OD,尝试第一次了解它的时候开始,网评就在外包/OD/自有三者之间疯狂比较。那本文就从外包/OD到底有什么区别?OD离自有有多远?来说说在如今华为社招基本停工的局面下,该如何面对华为这个ICT巨兽的招聘?希望对有些迷茫的人提供一些帮助。网上的声音有很多,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号