亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中邏輯控制舉例具體講解

 更新時(shí)間:2024年01月28日 10:15:56   作者:paper?jie  
Java程序邏輯控制通俗說就是對代碼執(zhí)行順序的控制,這篇文章主要給大家介紹了關(guān)于java中邏輯控制的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在前面,我們對java進(jìn)行了一個(gè)簡單的概括,講解了它的數(shù)據(jù)類型和變量,操作符。這期文章我們將對java中的邏輯控制進(jìn)行具體的講解,敬請期待~

分支結(jié)構(gòu)

if語句

語法格式1

if(布爾表達(dá)式){
// 語句
}

在java中,如果布爾表達(dá)式結(jié)果為true,執(zhí)行if中的語句,否則不執(zhí)行

舉個(gè)栗子:如果阿三大于90歲就是長壽,否則就不是

int age = 95;
if(age >= 90){
System.out.println("阿三活太久了吧");
}

語法格式2

if(
布爾表達(dá)式){
// 語句1
}else{
// 語句2
}

如果布爾表達(dá)式結(jié)果為true,則執(zhí)行if中語句,否則執(zhí)行else中語句。 

舉個(gè)栗子:如果阿三大于90歲就是活太久了,否則就是短命鬼

int age = 95;
if(age >= 90){
System.out.println("阿三活太久了吧");
}else {
System.out.println("阿三是短命鬼");
}

語法格式3

if(
布爾表達(dá)式1){
// 語句1
}else if(布爾表達(dá)式2){
// 語句2
}else{
// 語句3
}

表達(dá)式1成立,執(zhí)行語句1,否則表達(dá)式2成立,執(zhí)行語句2,否則執(zhí)行語句3  

舉個(gè)栗子:有一場學(xué)生的考試需要評估,分?jǐn)?shù)在 [90, 100] 之間的,為優(yōu)秀 分?jǐn)?shù)在 [80, 90) 之前的,為良好 分?jǐn)?shù)在 [70, 80) 之間的,為中等分?jǐn)?shù) 在 [60, 70) 之間的,為及格分?jǐn)?shù) 在 [ 0, 60) 之間的,為不及格 其他則為錯(cuò)誤數(shù)據(jù) 

if(
score >= 90){
System.out.println("優(yōu)秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >= 70 && score < 80){
System.out.println("中等");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("錯(cuò)誤數(shù)據(jù)");
}

注意:下面的代碼中,雖然兩種方式都是合法的, 但是 Java 中更推薦使用風(fēng)格1, 可千萬不要把C的代碼風(fēng)格帶到j(luò)ava中。

// 風(fēng)格1-----> 推薦
int x = 10;
if (x == 10) {
// 語句1
} else {
// 語句2
} 
//風(fēng)格二
int x = 10;
if (x == 10)
{
// 語句1
} e
lse
{
// 語句2
}

大家在編寫代碼的時(shí)候,要注意千萬不能在括號后面出現(xiàn);下面的代碼就是案例,多寫了一個(gè) 分號, 導(dǎo)致分號成為了 if 語句的語句體, 而 { } 中的代碼已經(jīng)成為了和一個(gè) if 無關(guān)的代碼塊 

int x = 20;
if (x == 10);
{
System.out.println("hehe");
} /
/ 運(yùn)行結(jié)果
hehe

還有一個(gè)問題就是if / else 語句中可以不加 大括號 . 但是也可以寫語句(只能寫一條語句). 此時(shí) else 是和最接近的 if 匹配.但是實(shí)際開發(fā)中我們 不建議 這么寫. 最好加上大括號

int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");

switch語句 

語法

switch(表達(dá)式){
case 常量值1:{
語句1;
[break;]
}
case 常量值2:{
語句2;
[break;]
}

……

default:{
內(nèi)容都不滿足時(shí)執(zhí)行語句;
[break;]
}
}

它的過程:

1. 先計(jì)算表達(dá)式的值

2. 和case依次比較,一旦有響應(yīng)的匹配就執(zhí)行該項(xiàng)下的語句,直到遇到break時(shí)結(jié)束

3. 當(dāng)表達(dá)式的值沒有與所列項(xiàng)匹配時(shí),執(zhí)行default 

舉個(gè)栗子:

int day = 1;
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("輸入有誤");
break;
}

注意:

多個(gè)case后的常量值不可以重復(fù)

switch的括號內(nèi)只能是以下類型的表達(dá)式:

基本類型:byte、char、short、int,注意不能是long類型

引用類型:String常量串、枚舉類型

循環(huán)結(jié)構(gòu)

while循環(huán) 

基本語法:

while(循環(huán)條件){
循環(huán)語句;
}

循環(huán)條件為 true, 則執(zhí)行循環(huán)語句; 否則結(jié)束循環(huán) 

舉個(gè)栗子:

nt num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}

注意:

1. 和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時(shí)候只能支持一條語句. 建議還是加上 { }

2. 和 if 類似, while 后面的 { 建議和 while 寫在同一行.

3. 和 if 類似, while 后面不要多寫 分號, 否則可能導(dǎo)致循環(huán)不能正確執(zhí)行. 

int num = 1;
while (num <= 10); {
System.out.println(num);
num++;
}

這個(gè)時(shí)候  while 的語句體(這是一個(gè)空語句), 實(shí)際的 { } 部分和循環(huán)無關(guān). 此時(shí)循環(huán)條件 num <= 10 恒成立, 導(dǎo)致代碼死循環(huán)了 

break

break 它是可以讓循環(huán)提前結(jié)束 

舉個(gè)栗子:

nt num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍數(shù), 為:" + num);
break;
} n
um++;
}

代碼遇到了break就會跳出去,停止循環(huán)

continue

continue 的作用是跳過這次循環(huán), 立即進(jìn)入下次循環(huán) 

舉個(gè)栗子:

int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 這里的 ++ 不要忘記! 否則會死循環(huán).
continue;
} System.out.println("找到了 3 的倍數(shù), 為:" + num);
num++;
}

執(zhí)行到 continue 語句的時(shí)候, 就會立刻進(jìn)入下次循環(huán)從而不會執(zhí)行到下方的打印語句 

for循環(huán)

基本語法

for(表達(dá)式①;布爾表達(dá)式②;表達(dá)式③){
表達(dá)式④;
}

表達(dá)式1: 用于初始化循環(huán)變量初始值設(shè)置,在循環(huán)最開始時(shí)執(zhí)行,且只執(zhí)行一次
表達(dá)式2: 循環(huán)條件,滿則循環(huán)繼續(xù),否則循環(huán)結(jié)束
表達(dá)式3: 循環(huán)變量更新方式 

它的過程是:①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->②為false,循環(huán)結(jié)束。 

舉個(gè)栗子:

for (int i = 1; i <= 10; i++) {
System.out.println(i);
}

畫圖分析

 注意:

1. 和 if 類似, for 下面的語句可以不寫 { } , 但是不寫的時(shí)候只能支持一條語句. 建議還是加上 { }

2. 和 if 類似, for 后面的 { 建議和 while 寫在同一行.

3. 和 if 類似, for 后面不要多寫 分號, 否則可能導(dǎo)致循環(huán)不能正確執(zhí)行.

4. 和while循環(huán)一樣,結(jié)束單趟循環(huán)用continue,結(jié)束整個(gè)循環(huán)用break 

do while循環(huán)

基本語法

do{
循環(huán)語句;
}while(循環(huán)條件);

先執(zhí)行循環(huán)語句, 再判定循環(huán)條件,循環(huán)條件成立則繼續(xù)執(zhí)行,否則循環(huán)結(jié)束。 

舉個(gè)栗子:

int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10);

注意:

1. do while 循環(huán)最后的分號不要忘記

2. 更推薦使用 for 和 while.

順序結(jié)構(gòu)

順序結(jié)構(gòu)就是按照代碼書寫的順序一行一行執(zhí)行。如果調(diào)整代碼的順序也會發(fā)生改變:

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 運(yùn)行結(jié)果
aaa
bbb
ccc
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
// 運(yùn)行結(jié)果
aaa
ccc
bbb

輸入輸出

輸出到控制臺

基本語法:

System.out.println(msg);
System.out.print(msg);
// 輸出一個(gè)字符串, 帶換行
// 輸出一個(gè)字符串, 不帶換行

System.out.printf(format, msg); // 格式化輸出

println 輸出的內(nèi)容自帶 \n, print 不帶 \n

printf 的格式化輸出方式和 C 語言的 printf 是基本一致的. 

舉個(gè)栗子:

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

從鍵盤輸入

使用 Scanner 讀取字符串/整數(shù)/浮點(diǎn)數(shù) 

import java.util.Scanner; // 需要導(dǎo)入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你的姓名:");
String name = sc.nextLine();
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(); // 注意, 要記得調(diào)用關(guān)閉方法
// 執(zhí)行結(jié)果
請輸入你的姓名:
張三
請輸入你的年齡:
18
請輸入你的工資:
1000
你的信息如下:
姓名: 張三
年齡:18
工資:1000.0

當(dāng)循環(huán)輸入多個(gè)數(shù)據(jù)的時(shí)候, 使用 ctrl + z 來結(jié)束輸入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d).

猜數(shù)字游戲

這里通過上面的知識給大家實(shí)現(xiàn)一個(gè)猜數(shù)字游戲,這個(gè)代碼在之前的博客用C也詳細(xì)講過一遍,這里就直接上代碼了:

import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默認(rèn)隨機(jī)種子是系統(tǒng)時(shí)間
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);
// System.out.println("toGuess: " + toGuess);
while (true) {
System.out.println("請輸入要輸入的數(shù)字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("猜小了");
} else if (num > toGuess) {
System.out.println("猜大了");
} else {
System.out.println("恭喜你,猜對了");
break;
}
} s
c.close();
}
}

附:接下來咱們用這三種循環(huán)來完成,計(jì)算10!的結(jié)果

while循環(huán)

long result = 1;
int i = 1;
while (i<=10){
    result *= i;
    i++;
}
System.out.println(result);

do……while循環(huán)

long result = 1;
int i = 1;
do {
    result *= i;
    i++;
}while (i<=10);
System.out.println(result);

for循環(huán)

long result = 1;
for (int i = 1; i <= 10; i++) {
    result*=i;
}
System.out.println(result);

以上結(jié)果均為3628800

總結(jié) 

到此這篇關(guān)于java中邏輯控制的文章就介紹到這了,更多相關(guān)java邏輯控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Ribbon與openfeign區(qū)別和用法講解

    Java?Ribbon與openfeign區(qū)別和用法講解

    Ribbon是基于Netflix?Ribbon實(shí)現(xiàn)的一套客戶端負(fù)載均衡的工具,主要功能是提供客戶端的軟件負(fù)載均衡算法和服務(wù)調(diào)用。openfeign對Feign進(jìn)行了增強(qiáng),使其支持Spring MVC注解,另外還整合了Ribbon和Nacos,從而使得Feign的使用更加方便
    2022-08-08
  • IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn)

    IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn)

    這篇文章主要介紹了IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Mybatis中Mapper標(biāo)簽總結(jié)大全

    Mybatis中Mapper標(biāo)簽總結(jié)大全

    這篇文章主要介紹了Mybatis中Mapper標(biāo)簽總結(jié)大全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • JDK10新特性之本地變量類型var的深入理解

    JDK10新特性之本地變量類型var的深入理解

    這篇文章主要給大家介紹了J關(guān)于DK10新特性之本地變量類型var的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JDK10具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解Spring bean的注解注入之@Autowired的原理及使用

    詳解Spring bean的注解注入之@Autowired的原理及使用

    之前講過bean注入是什么,也使用了xml的配置文件進(jìn)行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個(gè):@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下
    2021-06-06
  • Java設(shè)計(jì)模式中的觀察者模式

    Java設(shè)計(jì)模式中的觀察者模式

    觀察者模式定義對象之間的一種一對多的依賴關(guān)系,使得每當(dāng)一個(gè)對象的狀態(tài)發(fā)生變化時(shí),其相關(guān)的依賴對象都可以得到通知并被自動(dòng)更新。主要用于多個(gè)不同的對象對一個(gè)對象的某個(gè)方法會做出不同的反應(yīng)
    2023-02-02
  • Java中ArrayList與順序表的概念與使用實(shí)例

    Java中ArrayList與順序表的概念與使用實(shí)例

    順序表是指用一組地址連續(xù)的存儲單元依次存儲各個(gè)元素,使得在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲在相鄰的物理存儲單元中的線性表,下面這篇文章主要介紹了Java?ArrayList與順序表的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • idea導(dǎo)入springboot項(xiàng)目沒有maven的解決

    idea導(dǎo)入springboot項(xiàng)目沒有maven的解決

    這篇文章主要介紹了idea導(dǎo)入springboot項(xiàng)目沒有maven的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Mybatis-plus?代碼生成器?AutoGenerator?的簡介和使用詳解

    Mybatis-plus?代碼生成器?AutoGenerator?的簡介和使用詳解

    AutoGenerator是MyBatis-Plus的代碼生成器,通過AutoGenerator可以快速生成?Entity、Mapper、Mapper XML、Service、Controller等各個(gè)模塊的代碼,極大的提升了開發(fā)效率,這篇文章主要介紹了Mybatis-plus代碼生成器AutoGenerator的簡介和使用,需要的朋友可以參考下
    2023-05-05
  • java多線程編程之Synchronized關(guān)鍵字詳解

    java多線程編程之Synchronized關(guān)鍵字詳解

    這篇文章主要為大家詳細(xì)介紹了java多線程編程之Synchronized關(guān)鍵字,感興趣的朋友可以參考一下
    2016-05-05

最新評論