java中邏輯控制舉例具體講解
前言
在前面,我們對java進行了一個簡單的概括,講解了它的數(shù)據(jù)類型和變量,操作符。這期文章我們將對java中的邏輯控制進行具體的講解,敬請期待~
分支結(jié)構(gòu)
if語句
語法格式1
if(布爾表達式){
// 語句
}
在java中,如果布爾表達式結(jié)果為true,執(zhí)行if中的語句,否則不執(zhí)行
舉個栗子:如果阿三大于90歲就是長壽,否則就不是
int age = 95;
if(age >= 90){
System.out.println("阿三活太久了吧");
}語法格式2
if(
布爾表達式){
// 語句1
}else{
// 語句2
}
如果布爾表達式結(jié)果為true,則執(zhí)行if中語句,否則執(zhí)行else中語句。
舉個栗子:如果阿三大于90歲就是活太久了,否則就是短命鬼
int age = 95;
if(age >= 90){
System.out.println("阿三活太久了吧");
}else {
System.out.println("阿三是短命鬼");
}語法格式3
if(
布爾表達式1){
// 語句1
}else if(布爾表達式2){
// 語句2
}else{
// 語句3
}
表達式1成立,執(zhí)行語句1,否則表達式2成立,執(zhí)行語句2,否則執(zhí)行語句3
舉個栗子:有一場學生的考試需要評估,分數(shù)在 [90, 100] 之間的,為優(yōu)秀 分數(shù)在 [80, 90) 之前的,為良好 分數(shù)在 [70, 80) 之間的,為中等分數(shù) 在 [60, 70) 之間的,為及格分數(shù) 在 [ 0, 60) 之間的,為不及格 其他則為錯誤數(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("錯誤數(shù)據(jù)");
}注意:下面的代碼中,雖然兩種方式都是合法的, 但是 Java 中更推薦使用風格1, 可千萬不要把C的代碼風格帶到java中。
// 風格1-----> 推薦
int x = 10;
if (x == 10) {
// 語句1
} else {
// 語句2
}
//風格二
int x = 10;
if (x == 10)
{
// 語句1
} e
lse
{
// 語句2
}大家在編寫代碼的時候,要注意千萬不能在括號后面出現(xiàn);下面的代碼就是案例,多寫了一個 分號, 導致分號成為了 if 語句的語句體, 而 { } 中的代碼已經(jīng)成為了和一個 if 無關的代碼塊
int x = 20;
if (x == 10);
{
System.out.println("hehe");
} /
/ 運行結(jié)果
hehe還有一個問題就是if / else 語句中可以不加 大括號 . 但是也可以寫語句(只能寫一條語句). 此時 else 是和最接近的 if 匹配.但是實際開發(fā)中我們 不建議 這么寫. 最好加上大括號
int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
switch語句
語法
switch(表達式){
case 常量值1:{
語句1;
[break;]
}
case 常量值2:{
語句2;
[break;]
}
……
default:{
內(nèi)容都不滿足時執(zhí)行語句;
[break;]
}
}它的過程:
1. 先計算表達式的值
2. 和case依次比較,一旦有響應的匹配就執(zhí)行該項下的語句,直到遇到break時結(jié)束
3. 當表達式的值沒有與所列項匹配時,執(zhí)行default
舉個栗子:
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;
}注意:
多個case后的常量值不可以重復
switch的括號內(nèi)只能是以下類型的表達式:
基本類型: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)
舉個栗子:
nt num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}注意:
1. 和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { }
2. 和 if 類似, while 后面的 { 建議和 while 寫在同一行.
3. 和 if 類似, while 后面不要多寫 分號, 否則可能導致循環(huán)不能正確執(zhí)行.
int num = 1;
while (num <= 10); {
System.out.println(num);
num++;
}這個時候 while 的語句體(這是一個空語句), 實際的 { } 部分和循環(huán)無關. 此時循環(huán)條件 num <= 10 恒成立, 導致代碼死循環(huán)了
break
break 它是可以讓循環(huán)提前結(jié)束
舉個栗子:
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), 立即進入下次循環(huán)
舉個栗子:
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 這里的 ++ 不要忘記! 否則會死循環(huán).
continue;
} System.out.println("找到了 3 的倍數(shù), 為:" + num);
num++;
}執(zhí)行到 continue 語句的時候, 就會立刻進入下次循環(huán)從而不會執(zhí)行到下方的打印語句
for循環(huán)
基本語法
for(表達式①;布爾表達式②;表達式③){
表達式④;
}表達式1: 用于初始化循環(huán)變量初始值設置,在循環(huán)最開始時執(zhí)行,且只執(zhí)行一次
表達式2: 循環(huán)條件,滿則循環(huán)繼續(xù),否則循環(huán)結(jié)束
表達式3: 循環(huán)變量更新方式
它的過程是:①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->②為false,循環(huán)結(jié)束。
舉個栗子:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}畫圖分析

注意:
1. 和 if 類似, for 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { }
2. 和 if 類似, for 后面的 { 建議和 while 寫在同一行.
3. 和 if 類似, for 后面不要多寫 分號, 否則可能導致循環(huán)不能正確執(zhí)行.
4. 和while循環(huán)一樣,結(jié)束單趟循環(huán)用continue,結(jié)束整個循環(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é)束。
舉個栗子:
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");
// 運行結(jié)果
aaa
bbb
ccc
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
// 運行結(jié)果
aaa
ccc
bbb輸入輸出
輸出到控制臺
基本語法:
System.out.println(msg);
System.out.print(msg);// 輸出一個字符串, 帶換行
// 輸出一個字符串, 不帶換行System.out.printf(format, msg); // 格式化輸出
println 輸出的內(nèi)容自帶 \n, print 不帶 \n
printf 的格式化輸出方式和 C 語言的 printf 是基本一致的.
舉個栗子:
System.out.println("hello world");
int x = 10;
System.out.printf("x = %d\n", x)從鍵盤輸入
使用 Scanner 讀取字符串/整數(shù)/浮點數(shù)
import java.util.Scanner; // 需要導入 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)用關閉方法
// 執(zhí)行結(jié)果
請輸入你的姓名:
張三
請輸入你的年齡:
18
請輸入你的工資:
1000
你的信息如下:
姓名: 張三
年齡:18
工資:1000.0當循環(huán)輸入多個數(shù)據(jù)的時候, 使用 ctrl + z 來結(jié)束輸入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d).
猜數(shù)字游戲
這里通過上面的知識給大家實現(xiàn)一個猜數(shù)字游戲,這個代碼在之前的博客用C也詳細講過一遍,這里就直接上代碼了:
import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默認隨機種子是系統(tǒng)時間
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)來完成,計算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é)
到此這篇關于java中邏輯控制的文章就介紹到這了,更多相關java邏輯控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java?Ribbon與openfeign區(qū)別和用法講解
Ribbon是基于Netflix?Ribbon實現(xiàn)的一套客戶端負載均衡的工具,主要功能是提供客戶端的軟件負載均衡算法和服務調(diào)用。openfeign對Feign進行了增強,使其支持Spring MVC注解,另外還整合了Ribbon和Nacos,從而使得Feign的使用更加方便2022-08-08
IntelliJ IDEA優(yōu)化配置的實現(xiàn)
這篇文章主要介紹了IntelliJ IDEA優(yōu)化配置的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
詳解Spring bean的注解注入之@Autowired的原理及使用
之前講過bean注入是什么,也使用了xml的配置文件進行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個:@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下2021-06-06
Mybatis-plus?代碼生成器?AutoGenerator?的簡介和使用詳解
AutoGenerator是MyBatis-Plus的代碼生成器,通過AutoGenerator可以快速生成?Entity、Mapper、Mapper XML、Service、Controller等各個模塊的代碼,極大的提升了開發(fā)效率,這篇文章主要介紹了Mybatis-plus代碼生成器AutoGenerator的簡介和使用,需要的朋友可以參考下2023-05-05

