本篇文章為大家帶來了關於java的相關知識,其中主要介紹了關於控制語句的相關問題,包括了選擇語句、循環語句、轉向語句等相關內容,下面一起來看一下,希望對大家有幫助。
推薦學習:《java影片教學》
1.分類
怎麼接收使用者鍵盤輸入
java.util.Scanner s = new java.util.Scanner(System.in);
# 接收整數: int i = s.nextInt()
接收字串:String str = s.next();#或將第一句話分成兩個步驟:
import java.util.Scanner;
Scanner s = new Scanner(System.in)
控制語句分類
控制語句的可以讓我們的程式具有邏輯性/條理性,可以使用控制語句來實現一個「業務」。
控制語句包含3類:選擇語句、迴圈語句、轉向語句
選擇語句(分支語句): if語句、switch語句;
迴圈語句: for迴圈、while迴圈、do..while..迴圈;
轉向語句: break、continue、return(後面講);
2.語句詳解
選擇語句if 、switch
選擇語句主要包括兩種:if和switch!
#if語句
if語句是分支語句,也可以叫做條件語句。 if語句的語法格式:
第一種寫法:if(布尔表达式){ java语句; java语句; }這裡的一個大括號{} 叫做一個分支。
該語法的執行原理為:如果布林運算式的結果是true,則執行大括號中的程序,否則大括號中程式碼不執行。
第二種寫法:
if(布尔表达式){ // 分支1 java语句; }else{ // 分支2 java语句; }執行原則:如果布林運算式的結果是true,則執行分支1,則分支2不執行。如果布林表達式的結果是false,分支1不執行,執行分支2。
第三種寫法:
if(布尔表达式1){ // 分支1 java语句; }else if(布尔表达式2){ // 分支2 java语句; }else if(布尔表达式3){ // 分支3 java语句; }else if(布尔表达式4){ // 分支4... java语句; }....執行原則:先判斷「布林表達式1」,若「布林表達式1」為true,則執行分支1,然後if語句結束了。
當「布林運算式1」結果是false,那麼會繼續判斷布林運算式2的結果, 如果布林運算式2的結果是true,則執行分支2,然後整個if就結束了。
從上往下依序判斷,主要看第一個true發生在哪個分支。第一個true對應的分支執行,只要一個分支執行,整個if結束。
第四種寫法:
if(布尔表达式1){ // 分支1 java语句; }else if(布尔表达式2){ // 分支2 java语句; }else if(布尔表达式3){// 分支3 java语句; }else if(布尔表达式4){// 分支4 java语句; }else{ java语句; // 以上条件没有一个成立的。这个else就执行了。 }
注意事項
#對於if語句的條件只能是布林表達式,true和false! 不能是具體的數字和變數這一點是和C語言嚴格區分的;
對於if語句來說,在任何情況下只能有1個分支執行,不可能存在2個或更多個分支執行。 if語句中只要有1個分支執行了,整個if語句就結束了。 (對於1個完整的if語句來說的);
以上4種語法機制中,凡是帶有else分支的,一定可以保證會有一個分支執行。以上4種當中,第一種和第三種沒有else分支,這樣的語句可能會導致最後一個分支都不執行。第二種和第四種一定會有1個分支執行;
當分支當中「java語句;」只有1條,那麼大括號{}可以省略,但為了可讀性,最好不要省略。
控制語句和控制語句之間是可以嵌套的,但是嵌套的時候大家最好一個語句一個語句進行分析,不要冗餘在一起分析。
實例分析
#例1
對變數本身就是布林類型,我們的方式有多中;因為本身類型就是布林型,只要合乎語法和邏輯就可以!例如:sex、sex == true、或寫成三目運算子!
public class Test01{ public static void main(String[] args){ //1.本身就是布尔类型 boolean sex = true; if(sex){//sex == true也可以 System.out.println('男'); } else{ System.out.println('女'); } //2.也可以用三目运算符 char str = sex?'男':'女'; System.out.println(str); //3.一种特殊情况 if(sex = true){//赋值运算符,也可以编译通过,永远只执行if语句 System.out.println('男'); } else{ System.out.println('女'); } } }
例2
对于变量是整型,我们的方式就很少了,因为if后面跟的必须是布尔表达式;所以要写成一个表达式,让它生成一个布尔类型,例如:i == 100;
如果if...else后面只跟着一条语句,大括号可以省略;如果省略写了两个java语句也是没问题的;但是就会和下面的else断开,造成else没有if语句,编译报错;
//1.本身不是布尔类型 int i = 100; if(i == 100){ System.out.println(true); } else{ System.out.println(false); } //2.else缺少if if(sex) System.out.println('男'); System.out.println("Hello wprld");//合乎语法的 else //这一行报错,因为else缺少if System.out.println('女'); //上面等价于 if(sex){ System.out.println('男'); } System.out.println("Hello wprld"); else System.out.println('女');
例3
public class Test02{ public static void main(String[] args){ //从键盘接收数据 System.out.print("请输入你的年龄:"); java.util.Scanner s = new java.util.Scanner(System.in); int age = s.nextInt(); //1.方法1 if(age150){ System.out.println("年龄不合法"); }else if(age 150){ System.out.println("年龄不合法"); return;//不合理就跳出循环,防止后面在打印 }else if(age <blockquote> <p><strong>例4</strong><br> 系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。</p> <p> 等级:优:[90~100]、良:[80~90) 、中:[70-80)、及格:[60~70)、不及格:[0-60)</p> <p> 要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。</p> </blockquote><pre class="brush:php;toolbar:false">public class Test03{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入你的成绩:"); double grade = s.nextDouble(); String str = "优"; if(grade 100){ System.out.println("分数不合法"); return; //不合理就跳出循环,防止后面在打印 }else if(grade<p><strong>例5</strong></p><blockquote><p>从键盘上接收天气的信息:1表示:雨天<br> 0表示:晴天<br>同时从键盘上接收性别的信息:1表示:男<br> 0表示:女<br>业务要求:<br> 当天气是雨天的时候:男的:打一把大黑伞<br> 女的:打一把小花伞<br> 当天气是晴天的时候:男的:直接走起,出去玩耍<br> 女的:擦点防晒霜,出去玩耍</p></blockquote><pre class="brush:php;toolbar:false">public class Test04{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入天气,1表示雨天,0表示晴天:"); int weather = s.nextInt(); System.out.print("请输入性别,1表示男,0表示女:"); int sex = s.nextInt(); if(weather == 1){ if(sex == 1){ System.out.println("打一把大黑伞"); }else{ System.out.println("打一把小花伞"); } }else{ if(sex == 1){ System.out.println("直接走起,出去玩耍"); }else{ System.out.println("擦点防晒霜,出去玩耍"); } } } }
switch语句
switch语句也是选择语句,也可以叫做分支语句。
switch语句的语法格式:
switch(值){ case 值1: java语句; java语句;... break; case 值2: java语句; java语句;... break; case 值3: java语句; java语句;... break; default: java语句; }
其中:break语句不是必须的;default分支也不是必须的。
switch语句支持的值有:支持int类型以及String类型。
一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。在JDK8之后,switch语句开始支持字符串String类型。
switch语句本质上是只支持int和String,但是byte,short,char也可以
使用在switch语句当中,因为byte short char可以进行自动类型转换。switch语句的执行原理
拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,然后遇到"break;"语句,switch语句就结束了。
如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。
注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case 穿透现象。所有的case都没有匹配成功,那么最后default分支会执行。
实例分析
例1
写一个完整的switch语句;接收键盘输入,根据输入的数字来判断星期几。
0 星期日、1 星期一....、假设输入的数字就是正确的。0到6
public class Test05{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入[0-6]的天数:"); int day = s.nextInt(); switch(day){ case 0: System.out.println("星期日"); break; 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; default: System.out.println("选择错误"); break; } } }
例2
系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。必须用switch来写等级:优:[90~100]、良:[80~90) 、中:[70-80)、及格:[60~70)、不及格:[0-60)
要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。
public class SwitchTest02{ public static void main(String[] args){ //提示用户输入学生成绩 java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入学生成绩:"); double score = s.nextDouble(); //System.out.println(score); if(score 100){ System.out.println("您输入的学生成绩不合法,再见!"); return; } // 程序能够执行到这里说明成绩一定是合法的。 // grade的值可能是:0 1 2 3 4 5 6 7 8 9 10 // 0 1 2 3 4 5 不及格 // 6 及格 // 7 中 // 8 良 // 9 10 优 int grade = (int)(score / 10); // 95.5/10结果9.55,强转为int结果是9 String str = "不及格"; switch(grade){ case 10: case 9: str = "优"; break; case 8: str = "良"; break; case 7: str = "中"; break; case 6: str = "及格"; } System.out.println("该学生的成绩等级为:" + str); } }
循环语句while、do...while、for
for循环
for循环的语法机制以及运行原理
语法机制:for(初始化表达式; 条件表达式; 更新表达式){ 循环体; // 循环体由java语句构成 java语句; java语句; java语句; java语句; .... }注意:
第一:初始化表达式最先执行,并且在整个循环中只执行一次。
第二:条件表达式结果必须是一个布尔类型,也就是:true或false
执行原理:
(1)先执行初始化表达式,并且初始化表达式只执行1次。
(2)然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
(3)循环体结束之后,执行更新表达式。
(4)更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。
(5)直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。 更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新某个变量的值,这样条件表达式的结果才有可能从true变成false,从而 终止for循环的执行,如果缺失更新表达式,很有可能会导致死循环。
例1
public class ForTest02{ public static void main(String[] args){ //1. 最简练的for循环 //初始化表达式、条件表达式、更新表达式 其实都不是必须的!!! for(;;){ System.out.println("死循环"); } //2.最常见的for循环 for(int i = 0;i " + i); // 0 1 2 3....9 } System.out.println("i = " + i); //10,这里的i就可以访问了 //4.变形 for(int k = 1; k " + k); k++;// 1 2 3 4 5 6 7 8 9 10 } //5.变形 for(int k = 1; k " + k); // 2 3 4 5 6 7 8 9 10 11 } } }
例2
public class ForTest03{ public static void main(String[] args){ //1. for的其它形式 for(int i = 10; i > 0; i--){ System.out.println("i = " + i); // 10 9 8 7 6 5 4 3 2 1 } //2. 变形 for(int i = 0; i 0; i %= 3){ System.out.println("value2 = " + i); // 100 1 1... 1 } } }
例3:求1-100所得奇数和
public class Test07{ public static void main(String[] args){ int i = 0; int sum = 0; for(i=1;i<p><strong>例4:嵌套循环</strong></p><pre class="brush:php;toolbar:false">public class Test08{ public static void main(String[] args){ //1.注意初始化放里面 for(int i =0;i<p> <strong>例5:九九乘法表</strong></p><pre class="brush:php;toolbar:false">public class Test09{ public static void main(String[] args){ for(int i=1;i<h3></h3><h3 id="while循环">while循环</h3><blockquote> <p><strong>while循环的语法机制以及执行原理</strong><br> 语法机制: </p> <pre class="brush:php;toolbar:false"> while(布尔表达式){ 循环体; }
执行原理:
判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。
while循环有没有可能循环次数为0次?
可能;while循环的循环次数是:0~n次。
例1
public class WhileTest01{ public static void main(String[] args){ //1.死循环 while(true){ System.out.println("死循环"); } //2.本质上while循环和for循环原理是相同的。 for(初始化表达式; 布尔表达式; 更新表达式){ 循环体; } 初始化表达式; while(布尔表达式){ 循环体; 更新表达式; } //3.例子对比 //----for for(int i = 0; i " + i); } //----while int i = 0; while(i " + i); // 1 2 3 .. 9 10 } int i = 0; while(i <h3></h3><h3 id="do-while循环">do...while循环</h3><blockquote> <p><strong>do..while循环语句的执行原理以及语法机制:</strong><br> 语法机制: </p> <pre class="brush:php;toolbar:false"> do { 循环体; }while(布尔表达式);
注意:do..while循环最后的时候别漏掉“分号”;
执行原理:
先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。
对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。
对于while循环来说,循环体执行次数是:0~n次。
例1
public class Test10{ public static void main(String[] args){ int i = 0; //1. do{ //第一种方法 System.out.println(i); i++; //第二种方法 System.out.println(i++); }while(i<h2 id="转向语句-break-continue">转向语句:break、continue</h2><h3 id="break语句">break语句</h3><blockquote> <p>break;语句比较特殊,特殊在:break语句是一个单词成为一个完整的java语句。<br> break的作用:<span style="color:#fe2c24;">终止当前循环,直接跳出循环;</span></p> <p><strong>break主要用在两个地方,其它位置不行:</strong><br> 第一个位置:switch语句当中,用来终止switch语句的执行。用在switch语句当中,防止case穿透现象,用来终止switch。<br> 第二个位置:break;语句用在循环语句当中,用在for当中、用在while当中、用在do....while当中;用来终止循环的执行。</p> <p>break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近的那个循环语句。</p> <p>怎么用break;语句终止指定的循环呢?<br> 第一步:你需要给循环起一个名字,例如:</p> <pre class="brush:php;toolbar:false"> a: for(){ b:for(){ } }
第二步:终止:break a;
例1
public class BreakTest01{ public static void main(String[] args){ for(int i = 0; i " + i); } } System.out.println("------------------------------------------"); //4.终止外层的for,起一个别名! a:for(int k = 0; k " + i); } } System.out.println("呵呵"); } }
continue语句
continue翻译为:继续;continue语句和break语句要对比着学习;
continue语句的作用是:终止当前"本次"循环,直接进入下一次循环继续执行。
continue语句后面也可以指定循环;a:for(;;更新表达式1){ b:for(;;更新表达式2){ if(){ continue a; } code1; code2; code3; } }
例1
public class ContinueTest01{ public static void main(String[] args){ //1.对于break直接跳出当前循环 for(int i = 0; i <h2 id="小试牛刀">3.小试牛刀</h2><p><strong>例1:计算1000以内所有不能被7整除的整数之和</strong></p><pre class="brush:php;toolbar:false">public class Test01{ public static void main(String[] args){ int sum = 0; for(int i = 1;i<p><strong>例2:计算 1+2-3+4-5+6-7....+100的结果</strong></p><blockquote><p>注意除1以外,偶数是正,奇数是负;所以我们就从2开始循环,把sum初始化为1就可</p></blockquote><pre class="brush:php;toolbar:false">//方法1: public class Test02{ public static void main(String[] args){ int sum = 1; for(int i=2;i<pre class="brush:php;toolbar:false">//方法2:定义一个flag标记,用来控制正负,一个数一个数进行处理 public class Test02{ public static void main(String[] args){ int sum = 1; int flag = 1; for(int i=2;i<p><strong>例3:从控制台输入一个正整数,计算该数的阶乘。</strong><br></p><pre class="brush:php;toolbar:false">public class Test03{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入一个整数:"); int num = s.nextInt(); int ret = 1; //方法1 for(int i=1;i0;i--){ ret*=i; } System.out.println(ret); } }
例4:判断一个数是不是质数
//方法1: public class Test04{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int num = s.nextInt(); int i = 0; for(i = 2;i<num if system.out.println><pre class="brush:php;toolbar:false">//方法2: public class Test04{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int num = s.nextInt(); int i = 0; boolean str = true;//也相当于一个标记 for(i = 2;i<num if system.out.println><p><strong>例5:打印金字塔</strong></p> <pre class="brush:php;toolbar:false"> * *** ***** ******* *********
public class Test05{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int n = s.nextInt(); for(int i=0;i<n for system.out.print system.out.println><p><strong>例6:</strong><br></p> <blockquote><p>小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天<br> 或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱!</p></blockquote> <pre class="brush:php;toolbar:false">public class Test06{ public static void main(String[] args){ double money = 0; int day = 0; while(true){//这也可以写成while(money= 100){ break; } } System.out.println("需要"+day+"天存到"+money+"元钱"); } }
例7:
一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
找出1000内所有的完数。
public class Test07{ public static void main(String[] args){ for(int i=2;i<p> <strong>例8:求一个数是几位数,并逆序打印每一位</strong></p><pre class="brush:php;toolbar:false">public class Test08{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int num = s.nextInt(); int count = 0; int tmp = num; //求位数 while(tmp != 0){ count++; tmp /= 10; } System.out.println("位数是"+count+"位"); //逆序打印 tmp = num; while(tmp != 0){ System.out.println(tmp%10); tmp /= 10; } } }
例9
1 10 100 1000 2 20 200 2000 3 30 300 3000 4 40 400 4000
public class Test09{ public static void main(String[] args){ for(int i=1;i<p><strong>10</strong></p><pre class="brush:php;toolbar:false"> * *** ***** ******* ********* ******* ***** *** *
public class Test10{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int num = s.nextInt(); x(num); } public static void x(int n){ //1.打印上半部分 for(int i=0;i<n for system.out.print system.out.println><p><strong>11</strong><br></p> <blockquote><p>篮球从 5 米高的地方掉下来,每次弹起的高度是原来的 30%,经过几次弹起,篮球的高度是 0.1 米。 </p></blockquote> <pre class="brush:php;toolbar:false">public class Test11{ public static void main(String[] args){ int count = 0; double h = 5; while(h >= 0.1){ h *= 0.3; count++; } System.out.println(count); } }
推荐学习:《java视频教程》
以上是實例詳解Java基礎的控制語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。

javaisnotirelyplatemententedduetojvmvariationsandnativecodinteinteration,butitlargelyupholdsitsitsworapromise.1)javacompilestobytecoderunbythejvm

thejavavirtualmachine(JVM)IsanabtractComputingmachinecrucialforjavaexecutionasitrunsjavabytecode,使“ writeononce,runanywhere”能力

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

Java的五大特色是多態性、Lambda表達式、StreamsAPI、泛型和異常處理。 1.多態性讓不同類的對象可以作為共同基類的對象使用。 2.Lambda表達式使代碼更簡潔,特別適合處理集合和流。 3.StreamsAPI高效處理大數據集,支持聲明式操作。 4.泛型提供類型安全和重用性,編譯時捕獲類型錯誤。 5.異常處理幫助優雅處理錯誤,編寫可靠軟件。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。