Java—逻辑控制与输入输出

各位看官:如果您觉得这篇文章对您有帮助的话
欢迎您分享给更多人哦
感谢大家的点赞收藏评论,感谢您的支持
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的括号内只能是以下类型的表达式:
  • 基本类型:bytecharshortint,注意不能是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(2)Keras

文章目录 前言一、Keras二、使用Kears 估计回归问题的神经网络1. 载入、处理数据2. 数据预处理&#xff1a;归一化3. 设定一系列随机数种子4. 定义了一个简单的深度神经网络5. 训练模型6. 查看训练结果7. 使用最优轮数&#xff08;index1&#xff09;重新估计 此神经网络模型8.…

Authentication Lab | Timing Attacks

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;Timing Attacks 前情提要 由于软件系统对不同输入处理时间的差异&#xff0c;可能会导致系统存在侧信道攻击的隐患。比如&#xff0c;如果输入的是无效的用户名&#x…

通信工程学习:什么是三网融合

三网融合 三网融合&#xff0c;又称“三网合一”&#xff0c;是指电信网、广播电视网、互联网在高层业务应用上的深度融合。这一概念在近年来随着信息技术的快速发展而逐渐受到重视&#xff0c;并成为推动信息化社会建设的重要力量。以下是对三网融合的详细解释&#xff1a; 一…

LeetCode题练习与总结:生命游戏--289

一、题目描述 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即…

HTML图形

HTML图形 1. HTML5 Canvas2.HTML5 内联 SVG3.HTML 5 Canvas vs. SVG 1. HTML5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域&#xff0c;您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 1、创建…

想要成为独立游戏作者 :通关!游戏设计之道 1-1

1-1代表该书《通关&#xff01;游戏设计之道》第一章的第一篇文章 游戏是什么&#xff1f; 小时候我是先有卡带游戏机后接触的平板电脑和手机&#xff0c;起初我认为游戏是带给人快乐的&#xff0c;我就喜欢游戏里面各种有趣的玩法&#xff0c;各种友爱的画风&#xff0c;尤其…

哈夫曼编码

文章目录 &#x1f34a;自我介绍&#x1f34a;哈夫曼编解码&#x1f34a;哈夫曼树介绍&#x1f34a;哈夫曼编码思想 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家…

AI 正在颠覆编程,程序员的出路在哪里?

AI 正在颠覆编程&#xff0c;程序员的出路在哪里&#xff1f; AI 的飞速发展&#xff0c;让程序员群体感受到了前所未有的压力。我们的工作&#xff0c;真的会被 AI 取代吗&#xff1f;未来的职业发展方向究竟在哪&#xff1f;我们应该害怕&#xff0c;还是应该拥抱这种变化&a…

Spring Boot ⽇志

目录 1.⽇志使⽤ 2.⽇志级别 3.⽇志配置 3.1配置⽇志级别 3.2⽇志持久化 3.3配置⽇志⽂件分割 4.更简单的⽇志输出 1.⽇志使⽤ 在使用之前我们先来了解一下为什么要使用&#xff1f; ⽇志的⽤途 1.系统监控 我们可以通过⽇志记录这个系统的运⾏状态&#xff0c;对数…

The legacy JS API is deprecated and will be removed in Dart Sass 2.0

The legacy JS API is deprecated and will be removed in Dart Sass 2.0 更新了sass版本后&#xff0c;启动项目控制台一直在报错&#xff0c;影响开发效率&#xff0c;强迫症表示忍受不了。 字面意思是&#xff1a;Sass在2.0版本将会移除legacy JS API&#xff0c;所以现在使…

Git的安装配置

目录 一、git和svn的区别是什么 二、下载Git 三、安装 四、使用 一、git和svn的区别是什么 1、git是分布式的&#xff0c;svn是集中的式的 2、git存储数据时是按元数据的方式存储&#xff0c;而svn是按文件的方式存储 3、git分支和svn的分支不一样 4、git没有全局版本号…

【Sceneform-EQR】(手势控制器实现)通过手势事件实现在AR/VR等三维场景中的控制模型旋转、平移与缩放

在Sceneform-EQR中实现旋转平移缩放手势 实现在AR/VR等三维场景&#xff0c;通过手势控制模型节点的缩放、平移和旋转。 实现思路 实现模型旋转 Sceneform-EQR(filament\opengl)中采用右手坐标系。通过欧拉角进行旋转采用Z->Y->X的顺序&#xff0c;在这里&#xff0c;…

iOS swift5 苹果app审核被拒 1.4.1

文章目录 1.被拒2. 官网1.4.1的规定3.如何解决参考博客 1.被拒 准则1.4.1-安全-人身伤害 该应用程序连接到外部医疗硬件&#xff0c;以提供医疗服务。然而&#xff0c;为了遵守准则1.4.1&#xff0c;您必须&#xff1a; -提供来自适当监管机构的文件&#xff0c;证明应用程序…

vim 操作

vim编辑器的有三种工作模式&#xff1a;命令模式、插入模式和底行命令模式 打开进入命令模式&#xff1a; 由命令模式到输入模式&#xff1a;i:在光标前插&#xff1b;a:在光标后插&#xff1b;o:在下一行插 由输入模式进入命令模式&#xff1a;esc 由命令模式进入底行命令…

LabVIEW激光诱导击穿光谱识别与分析系统

LabVIEW激光诱导击穿光谱&#xff08;LIBS&#xff09;分析系统利用高能量脉冲激光产生高温等离子体&#xff0c;通过分析等离子体发出的光谱来定性分析样品中的元素种类。该系统的开发集成了软件与硬件的设计&#xff0c;实现了自动识别和定性分析功能&#xff0c;适用于环境监…

多表数据实时同步和批量实时同步怎么高效实现?

对于企业来说&#xff0c;准确、及时的数据是进行数据分析和决策支持的基础。如果各个系统中的数据不能及时同步&#xff0c;就会影响数据分析的结果和决策的准确性。通过数据同步&#xff0c;可以将企业内部各个系统中的数据整合到一个数据仓库或数据分析平台中&#xff0c;为…

WSL(Windows Subsystem for Linux)——简单的双系统开发

文章目录 WSLWSL的作用WSL的使用WSL的安装挂载磁盘的作用安装linux发行版 WSL 前言&#xff1a;本人由于在开发中需要linux环境&#xff0c;同时还想要直接在Windows下开发&#xff0c;来提升开发效率&#xff0c;随即简单学习WSL。 WSL&#xff08;Windows Subsystem for Li…

水污染急需机器人,材料局限遇难题,MXene 水凝胶有潜力

大家好&#xff01;今天我们来了解一项关于水污染管理的前沿研究——《A MXene Hydrogel‐Based Versatile Microrobot for Controllable Water Pollution Management》发表于《Advanced Science》。水污染&#xff0c;尤其是有机染料污染&#xff0c;严重威胁着我们的健康和环…

【Linux基础】03 Linux环境基础开发工具使用

1. yum ——软件包管理器 yum 是我们 Linux 预装的一个指令&#xff0c;搜索、下载、、安装对应的软件 yum 相当于 Linux 的应用商店&#xff01; 安装与卸载 yum list | grep command 通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我…

大数据毕业设计选题推荐-电影票房数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…