首页 > 编程语言 >Java—逻辑控制与输入输出

Java—逻辑控制与输入输出

时间:2024-10-10 09:21:25浏览次数:3  
标签:逻辑 Java int 输入输出 System break num println out

各位看官:如果您觉得这篇文章对您有帮助的话
欢迎您分享给更多人哦
感谢大家的点赞收藏评论,感谢您的支持
c74aa267346f4a60b3edbe51bce6243b.png!!!

一.顺序结构:

我每天起床,躺在床上玩手机,然后吃中午饭,睡觉,打游戏,吃饭,打游戏,睡觉(这个就是顺序结构,顺序结构比较简单,按照代码书写的顺序一行一行执行。)


二:分支结构:

1.if语句

语法一:

if ( 布尔表达式 ) {          里面只能是布尔表达式 // 语句 }
语法二 :
if ( 布尔表达式 1 ){ // 语句 1 } else if ( 布尔表达式 2 ){ // 语句 2 } else { // 语句 3 }

一个小问题:

int x = 20 ; if ( x == 10 );   这个分号多余了,导致了接下来的打印没有条件控制 { System . out . println ( "hehe" ); } // 运行结果 hehe

此处多写了一个分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块

小练习:

判断一个年份是否为闰年 :
 public static void main(String[] args) {
        int year = 2000;
        if (year % 4 == 0&&year % 100 != 0||year % 400 == 0) {
            System.out.println("是闰年");
        }else{
            System.out.println("不是闰年");
        }
    }

2.switch语句

switch ( 表达式 ){ case 常量值 1 :{ 语句 1 ; break ; } case 常量值 2 :{ 语句 2 ; break ; } ... default :{ 内容都不满足时执行语句 ; break ; } }
注意事项1:
  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
  • 基本类型:byte、char、short、int,注意不能是long,float,double类型
  • 引用类型:String常量串、枚举类型
  • break不要漏掉
String类型我讲述一下:
public static void main(String[] args) {
        String s = "abc";
        switch (s){
            case "a" :
                System.out.println("a");
                break;
            case "abc":
                System.out.println("就是abc");
                break;
            case "bc":
                System.out.println("bc");
                break;
            default:
                System.out.println("没有相同的");
                break;
        }

就是把String类型的变量放进switch的括号内

注意事项二:

switch 不能表达复杂的条件
// 例如 : 如果 num 的值在 10 到 20 之间 , 就打印 hehe // 这样的代码使用 if 很容易表达 , 但是使用 switch 就无法表示 . if ( num > 10 && num < 20 ) { System . out . println ( "hehe" ); }
注意事项3: switch 虽然支持嵌套 , 但是很丑并且看着难受,一般不推荐 ~:
int x = 1;
int y = 1;
switch(x) {
case 1:
switch(y) {
case 1:
System.out.println("hehe");
break;
}
break;
case 2:
System.out.println("haha");
break;
}

综上, 我们发现, switch 的使用条件挺多的

三:循环结构

1:while循环

基本语法格式 : 循环条件只能是boolean类型,为 true, 则执行循环语句 ; 否则结束循环 . 代码示例 1: 计算 1! + 2! + 3! + 4! + 5! 的值
int num = 1 ; int sum = 0 ; // 外层循环负责求阶乘的和 while ( num <= 5 ) { int factorResult = 1 ; int tmp = 1 ; // 里层循环负责完成求阶乘的细节 . while ( tmp <= num ) { factorResult *= tmp ; tmp ++ ; } sum += factorResult ; num ++ ; } System . out . println ( "sum = " + sum );
这里我们发现, 当一个代码中带有多重循环的时候, 代码的复杂程度就大大提高了. 而比较复杂的代码就更容易出错. 后面我们会采用更简单的办法来解决这个问题

2:break和continue

break:break 的功能是让循环提前结束.

int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
// 执行结果
找到了 3 的倍数, 为:102
我们找到了,  break 就会让循环结束 . continue:continue 的功能是跳过这次循环 , 立即进入下次循环 代码示例 : 找到 100 - 200 中所有 3 的倍数
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 这里的 ++ 不要忘记! 否则会死循环.
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.

3:for循环

两种遍历数组的方式: 第一种:我们学C的时候普遍用的(java的数组定义和C不太一样,后面的博客我会具体讲解)
int [] array = new int []{ 10 , 20 , 30 , 40 , 50 }; for ( int i = 0 ; i < 5 ; i ++ ){ System . out . println ( array [ i ]); }
第二种:java提供的 使用 for-each 遍历数组
int [] array = { 1 , 2 , 3 }; for ( int x : array ) {         这里for(元素的类型:数组名) System . out . println ( x ); }
第二种的缺点就是拿不到数组的下标

4:do while循环

特点:先执行一次

先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。 例子:打印1~10
int num = 1 ; do { System . out . println ( num ); num ++ ; } while ( num <= 10 )
【注意事项】 1. do while 循环最后的分号不要忘记 2. 一般 do while 很少用到 , 更推荐使用 for 和 while.

四:输入输出

1. 输出:

System . out . println ( msg ); // 输出一个字符串 , 带换行 System . out . print ( msg ); // 输出一个字符串 , 不带换行 System . out . printf ( format , msg ); // 格式化输出
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

例如:

System . out . println ( "hello world" ); int x = 10 ; System . out .printf ( "x = %d\n" , x )

2:从键盘输入:

使用 Scanner 类里的方法 读取字符串 / 整数 / 浮点数
import java . util . Scanner ; // 需要导入 util 包 Scanner sc = new Scanner ( System . in ); 在Java中,System.in 是一个预定义的输入流(InputStream),它代表了标准输入流。这个输入流通常对应于键盘输入,但是也可以被重定向,例如从文件或其他输入源读取数据。System.in是Java程序用来从外部(如用户)接收输入的一种方式 sc是Scanner类型的变量,它可以调用Scanner里面的方法 System . out . println ( " 请输入你的姓名: " ); String name = sc . nextLine (); 读取下一行 has.NexLine(检查输入时是否还有下一行) System . out . println ( " 请输入你的年龄: " );   int age = sc . nextInt ();读取下一个整形 System . out . println ( " 请输入你的工资: " ); float salary = sc . nextFloat ();读取下一个浮点数 System . out . println ( " 你的信息如下:" ); System . out . println ( " 姓名 : " + name + "\n" + " 年龄: " + age + "\n" + " 工资: " + salary ); sc . close (); // 注意 , 要记得调用关闭方法,关闭Scanner对象,释放它所占用的资源 //sc.next() 读取下一个完整的token(一般是单词) // 执行结果 请输入你的姓名: 张三 请输入你的年龄: 18 请输入你的工资: 1000 你的信息如下: 姓名 : 张三 年龄: 18 工资: 1000 . 0 注意:一般不是读取一行的方法 例如sc.nextInt,会读取用户输入的整数直到遇到空格,换行符,或输入结束,如果用户输入的不是整数,就会抛出异常(和C不一样)

2.1:循环输入

使用 Scanner 循环读取 N 个数字,并求取其平均值(别忘了转换成double类型)
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {
    int tmp = sc.nextInt();
    sum += tmp;
    num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " +(double) sum / num);
sc.close();
注意事项 : 当循环输入多个数据的时候 , 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d).

2.2. 猜数字游戏:

游戏规则 :二分查找的猜
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了
import java.util.Random;
import java.util.Scanner;;
class Test {
    public static void main(String[] args) {
        Random random = new Random(); // 默认随机种子是系统时间
        Scanner sc = new Scanner(System.in);
        int toGuess = random.nextInt(100);//生成随机数1~100(左闭右开)
//int toGuess = random.nextInt(20)+10;//生成随机数10~30(左闭右开)
// System.out.println("toGuess: " + toGuess);
        while (true) {
            System.out.println("请输入要输入的数字: (1-100)");
            int num = sc.nextInt();
            if (num < toGuess) {
                System.out.println("低了");
            } else if (num > toGuess) {
                System.out.println("高了");
            } else {
                System.out.println("猜对了");
                break;
            }
        }
        sc.close();
    }
}

上述就是的Java—逻辑控制与输入输出全部内容了,
 欢迎各位大佬评论区留言修正
您的支持就是我最大的力量
​​​bcb51650eac54f748f693cdc5b00f9a6.png2d8b40093abe47c7b347cdd7c906e87f.gif

标签:逻辑,Java,int,输入输出,System,break,num,println,out
From: https://blog.csdn.net/2302_80639556/article/details/142733872

相关文章

  • 【JavaScript实用日期星期函数】日期格式化、获取日期是星期几、今后7天的日期、本周
    ......
  • java计算机毕业设计实验课程安排与资料管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今高等教育体系中,实验课程作为理论与实践相结合的重要环节,对于培养学生的实践能力和创新思维具有不可替代的作用。然而,传统的人工管理方式在实验......
  • java计算机毕业设计三人行微课堂教学综合管理(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着深刻的变革。传统的课堂教学方式已难以满足多元化、个性化的学习需求。特别是在微课堂教学模式下,如何实现高......
  • java计算机毕业设计球场预定管理(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在现代都市生活中,体育运动已成为人们休闲娱乐、保持健康的重要方式。随着城市化进程的加快,各类球场设施如雨后春笋般涌现,满足了不同人群的运动需求。......
  • JAVA基础:FutureTasck 和 Callable、Timer定时任务
    1FutureTasck和Callable是JDK1.5之后,在JUC工具包提供了一个多线程工具类在多线程应用中,a线程可以通过FutureTask和Callable了解b线程是否执行完毕以及b线程执行的结果。可以实现两个线程之间的通信。自定义线程类,实现Callable接口,重写call方法,该方法执行的功能就是......
  • Java项目实战II基于Java+Spring Boot+MySQL的墙绘产品展示交易平台设计与实现(源码+数
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在当今多元化、个性化的家居装饰市场中,墙......
  • Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在教育信息化的大背景下,作业管理作为教学......
  • JAVA 毕设 环保小程序 开源
    项目介绍项目是帮别人设计的毕设项目,主要分为前台和后台,前台是微信小程序,后台是通过若依框架快速开发的管理平台,项目主要分为题库、活动、社区、视频、基础信息、会员等几大模块。开发技术:前端:Vue2.0+ElementUi+微信小程序开发语言后端:SpringBoot+Redis+MySQL其他框架:......
  • java 死锁问题排查
    排查过程1.识别死锁现象通常,死锁会表现为应用程序挂起,不响应用户请求或cpu使用率下降。2.收集线程转储当应用出现不响应时,可以使用以下方法收集线程转储:jstack-l进程ID>threaddump.txt3.分析线程转储从生成的线程转储寻找"deadlock"等相关信息。java会在发现死......
  • CAS存在的问题及在Java中的解决方式
    CAS介绍CAS可以保证对共享变量操作的原子性CAS全称CompareAndSwap,比较与交换,是乐观锁的主要实现方式。CAS在不使用锁的情况下实现多线程之间的变量同步。ReentrantLock内部的AQS和原子类内部都使用了CAS。CAS算法涉及到三个操作数:需要读写的内存值V。进行比较的值A。要写入......