Java—逻辑控制与输入输出

郑州吴彦祖772 2024-10-10 12:35:08 阅读 91

各位看官:如果您觉得这篇文章对您有帮助的话

欢迎您分享给更多人哦

感谢大家的点赞收藏评论,感谢您的支持

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 无关的代码块

小练习:

判断一个年份是否为闰年 :

<code> 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 的功能是让循环提前结束.

<code>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.png

2d8b40093abe47c7b347cdd7c906e87f.gif



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。