首页 > 编程语言 >Java流程控制——the next day

Java流程控制——the next day

时间:2023-06-13 18:00:23浏览次数:37  
标签:Java Scanner int System next public println day out

用户交互Scanner

Next和NextLine

Java5的新特性,带来了java.util.Scanner类,提供了人机交互的作用。我们可以通过它获取用户的输入

 public class Demo2 {
     public static void main(String[] args) {
         Scanner s = new Scanner(System.in);//创建一个扫描器对象,用于接收键盘数据
         s.next();//获取数据
         s.nextLine();//获取多行数据
         s.hasNext();//判断还是否有下一个数据
         s.hasNextLine();//判断还是否有下一行数据
    }
 }
  • next():

    • 一定要读取到字符才能结束输入。(才能使程序继续运行)

    • 不会记录空白,并且以空格为结束符。

    • 不能得到带有空格的字符串。

  • nextLine():

    • 以Enter为结束符。

    • 可以获得空白。

Scanner的获取类型

image-20230605180534853

Scanner类提供了多种方法,支持获取不同数据类型的数据。

例如:

 Scanner s = new Scanner(System.in);
 int a = s.nextInt();//获取一个int类型,如果不是int型则弹出错误
 s.hasNextInt();//判断输入的是否为int类型,返回布尔数值。
 System.out.println(a);
 s.close();

练习:输入多个数字,求其总和与平均值;每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。

 public class Demo02_practice {
     //练习:输入多个数字,求其总和与平均值;每输入一个数字用回车确认,
     // 通过输入非数字来结束输入并输出执行结果。
     public static void main(String[] args) {
         //创建扫描器
         Scanner scanner = new Scanner(System.in);
         //创建接收变量,double类型记得要加上L,不然会出现数据错误问题
         double sum = 0L;
         int count=0;
         //判断是否还有double数值输入,非double则跳出循环
         while (scanner.hasNextDouble()){
             sum += scanner.nextDouble();
             count++;
        }
         System.out.println("总数为:"+sum);
         System.out.println("平均数为:"+sum/count);
         //回收扫描器
         scanner.close();
    }
 }

 

顺序结构

image-20230607091451333

字面意思,除了特殊情况外,代码都是一行一行的执行,就像写字一样,一行一行写。

 

选择结构(IF语句)

单选择结构

image-20230607092249194

小练习:判断输入的数值是否为hello
  • .equals 方法和 str=="hello" 的区别在于:

    • .equals 方法是对比数值是否相同;

    • str=="hello"是对比两个变量之间的内存地址块是否是同一块。

 public class IFDemo01 {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         System.out.println("请输入内容:");
         String str = scanner.nextLine();
         if (str.equals("Hello")){
             System.out.println(str);
        }
         System.out.println("输入的值不是hello");
         scanner.close();
    }
 }

双选择结构

image-20230608102220265

小练习:考试分数大于等于60就是几个,小于60就不及格
 public class IFDemo2 {
     public static void main(String[] args) {
         //考试分数大于等于60就是几个,小于60就不及格
         //解决方案A
         Scanner scanner = new Scanner(System.in);
         int score = scanner.nextInt();
         scanner.close();
         if (score>=60){
             System.out.println("及格");
        }else {
             System.out.println("不及格");
        }
         //解决方案B:三元运算符
         String str = score>=60?"及格":"不及格";
         System.out.println(str);
    }
 }

多选择结构

image-20230608102434903

小练习:考试分数大于等于60就是几个,小于60就不及格,并且对及格成绩每10分进行定级,满分则显示满分。超出分值范围应当显示不合法。
 public class IFDemo03 {
     public static void main(String[] args) {
         //考试分数大于等于60就是几个,小于60就不及格
         Scanner scanner = new Scanner(System.in);
         int score = scanner.nextInt();
         scanner.close();
         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>=70){
             System.out.println("C级");
        }else if (score<70 && score>=60){
             System.out.println("D级");
        }else if (score<60 && score>=0){
             System.out.println("不及格");
        }else {
             System.out.println("成绩不合法");
        }
    }
 }

嵌套结构

image-20230608103638077

小练习:输入一个数1~100,猜出这个数值是多少?

小提示:采用二分查找法。

switch多选择结构

image-20230608183546908

  • case

    • 穿透关键词,可以根据switch上的变量,对比case后的数值,相同则执行case下的语句。

  • break

    • 中断语句,跳出循环或当前代码块。

拓展:反编译

通常我们Java文件在运行时,都需要编译为.class 文件才能执行。

IDEA 程序为我们提供了反编译的功能。将.class文件拖入IDEA程序中,即会自动进行反编译。

image-20230608191052402

实际上我们看到的switch语句,是通过编写为这种方式,进行运行的。

 

循环结构

while循环

image-20230608191435978

小练习:计算1+2....+100
 public class whileDemo1 {
     public static void main(String[] args) {
         int i=1;
         int sum=0;
         while (i<=100){
             sum+=i;
             i++;
        }
         System.out.println(sum);
    }
 }

do……while循环

image-20230612175258788

小练习:计算1+2....+100,观察do..while 和whlie的区别
 public class WhileDemo02 {
     public static void main(String[] args) {
         int i=1;
         int sum=0;
         do{
             sum+=i;
             i++;
        } while (i<=100);
         System.out.println(sum);
    }
 }

 

for循环(经常使用,十分重要)

image-20230613101206196

是最有效,最灵活的循环结构。

关于for循环有以下几点说明:

  • 最先执行初始化步骤。

  • 可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。

  • 之后,检测布尔值,如果是true则运行循环。false则循环终止。

  • 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)

//FOR语句的死循环写法
for(;;){

}
//FOR语句的是三个部分都可以是空语句。
练习1:计算0到100之间的奇数和偶数的和
public class ForDemo01 {
public static void main(String[] args) {
int oddSum = 0;
int evenSum = 0;
//快捷键100.for
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
oddSum += i;
} else {
evenSum += i;
}
}
System.out.println("奇数和为:" + oddSum);
System.out.println("偶数和为:" + evenSum);
}
}
练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
public class ForDemo02 {
public static void main(String[] args) {
int j = 0;
for (int i = 1; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
j++;
if (j % 3 == 0 && j != 0) {
System.out.println();
}
}
}
}
}
练习3:打印九九乘法表
public class ForDemo03 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j)+"\t");
}
System.out.println();
}
}
}

增强型for循环

image-20230613111212364

 

public class ForDemo04 {
public static void main(String[] args) {
//定义数组的两种方式:不初始化,但是指定数组范围;
int[] number=new int[5];
//初始化数组
int[] number2={12,213,31,1213,14,5,54,23};
for (int i : number2) {//遍历数组
System.out.println(i);
}
}
}

break & continue

image-20230613111540213

简而言之:

  • break:跳出循环体;

  • continue:跳过单次循环;

    • 功能2:跳到指定标签的循环体如下;(不建议使用)

outer:for (int i = 11; i < 15; i++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0) {
continue outer;
}
}
}

 

练习

题目:输入一个数值,根据这个数值打印一个等边三角形

image-20230613113946533

代码:

public class TestDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
for (int j = n; j > 0; j--) {
for (int i = j; i > 0; i--) {
System.out.print(" ");
}
for (int i = 0; i < (n - j) * 2 + 1; i++) {
System.out.print("*");
}
System.out.println();
}
} else {
System.out.println("输入信息有误,请输入整数");
}
//解题思路
//当N=5时,要输出1个*;以此类推得出如下思路;最后总结公式:(n-j)*2+1;可以解这个公式
// 5---1
// 4---3
// 3---5
// 2---7
// 1---9
}
}

输出如下:

image-20230613171845310

这种类型的算法题,对加深JavaSE代码的理解非常有帮助;有能力的小伙伴可以进阶的研究一下贪心算法中的背包问题。是一到经典的动态规划类型题目。

 

 ### 部分截图取自,B站UP:遇见狂神说;菜鸟教程

 

标签:Java,Scanner,int,System,next,public,println,day,out
From: https://www.cnblogs.com/xuyuyu/p/17478364.html

相关文章

  • day01
    MarkDown学习二级标题三级标题四级标题 字体Hello,World!Hello,World!Hello,World!Hello,World! 引用选择狂神说Java,走向人生巅峰 分隔线 图片 超链接点击跳转到狂神博客 列表ABC ABC 表格名字性别生日张三男1997.1.......
  • java 学习路线
    基础: java高级 https://www.bilibili.com/video/BV17F411T7Ao/?spm_id_from=333.337.search-card.all.click https://www.bilibili.com/video/BV1yW4y1Y7Ms/?spm_id_from=333.788.recommend_more_video.0 mysql高级https://www.bilibili.com/video/BV1Kr4y1i7ru/?spm_id_from=33......
  • JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解
    《JavaCV音视频开发宝典》专栏目录导航《JavaCV音视频开发宝典》专栏介绍和目录​前言两年前博主写了如何利用JavaCV解析各种h264裸流,《JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并解析预览图像》,但是随着时间变化,各个厂商sdk也......
  • java中 怎么把字符串转成 double
    Java中可以使用Double类中的静态方法 parseDouble() 将一个字符串转换为double类型的数值。用法如下:Stringstr="3.14";doublenumber=Double.parseDouble(str);在上述代码中,我们首先定义一个字符串 str,它包含了要转换的数值。然后,我们使用 parseDouble() 方法将字......
  • java中 怎么把字符串转成 double
    Java中可以使用Double类中的静态方法 parseDouble() 将一个字符串转换为double类型的数值。用法如下:Stringstr="3.14";doublenumber=Double.parseDouble(str);在上述代码中,我们首先定义一个字符串 str,它包含了要转换的数值。然后,我们使用 parseDouble() 方法将字......
  • java ImageIO处理图像的封装
    评:packagecom.adam.dev.pic.easyImage;importjava.awt.AlphaComposite;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.Point;importjava.awt.Rectangle;importjava.awt.co......
  • java 代理(静态代理、动态代理的不同实现)详解及示例
    (文章目录)本文简单的介绍了java的代理概念,针对静态和动态代理的不同定义与实现方式,并给出了详细的示例,最后给出一个综合的应用,展示动态代理的使用。一、代理构成1、代理介绍代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色。Subject角色负责定义RealSubject和Proxy......
  • java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快
    (文章目录)本文简单的介绍了java常见的几种排序。所有的排序均是一个数组由小到大进行排序。一、冒泡排序1、效率表现和适用范围效率O(n²)适用于排序小列表2、算法实现publicvoidbubbleSortArray(int[]a){ intn=a.length; for(inti=1;i<n;i++){ fo......
  • springboot~代码风格统计spring-javaformat-maven-plugin插件
    SpringJavaformat是Spring团队开发的一款基于GoogleJavaFormat的代码格式化工具,可以帮助Java开发者自动化进行代码格式化,提高代码质量,降低代码维护成本。SpringJavaformat可以自定义配置文件,支持大量的代码风格配置选项,满足不同项目和团队的需求。还可以与Gradle、Maven、Int......
  • java基础语法
    今天开始学习java,对于只学过python的我来说,第一感觉就是java比较啰嗦,但是也比较严谨,这可能是好事!python,java有几点不同。1,java最基本的单位是class类,所有的东西都是由类构成的,java中没有函数,它只有类中的方法,所以定义的时候必须把它放在类里面,放外面会报错python中可以......