javaSE(day03)

1 順序語(yǔ)句

語(yǔ)句:使用分號(hào)分隔的代碼稱作為一個(gè)語(yǔ)句沟涨。

注意:沒(méi)有寫(xiě)任何代碼只是一個(gè)分號(hào)的時(shí)候虐秦,也是一條語(yǔ)句,稱作空語(yǔ)句断凶。

順序語(yǔ)句就是按照從上往下的順序執(zhí)行的語(yǔ)句。
2 判斷(if…else)
在我們找工作的過(guò)程中巫俺,要求兩年工作經(jīng)驗(yàn)以上且年齡超過(guò)30歲认烁。
什么是判斷語(yǔ)句:用于判斷的語(yǔ)句叫判斷語(yǔ)句。
1.格式一
if(判斷條件){
如果符合條件執(zhí)行的代碼;
執(zhí)行的代碼塊1介汹;
執(zhí)行的代碼塊2却嗡;
……………….;
執(zhí)行的代碼塊n嘹承;
}

練習(xí):提示用戶輸入一個(gè)整數(shù)窗价。如果該整數(shù)是5的倍數(shù),打印“5的倍數(shù)”如果是2的倍數(shù)打印“2的倍數(shù)”
提示:為了便于讓用戶輸入數(shù)據(jù)叹卷,我們使用Scanner這個(gè)類撼港,固定用法Scanner sc=new Scanner(System.in); 該類需要導(dǎo)入包import java.util.Scanner;
int nextInt = sc.nextInt();獲取用戶輸入的數(shù)字
import java.util.Scanner;
public class Demo9 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int nextInt = sc.nextInt();
if(nextInt%5==0){
System.out.println("是5的倍數(shù)");
}
if(nextInt%2==0){
System.out.println("是2的倍數(shù)");
}
}
}

2.格式二
if(判斷條件){
執(zhí)行的代碼塊1;
執(zhí)行的代碼塊2骤竹;
……………….帝牡;
執(zhí)行的代碼塊n;
}else{
執(zhí)行的代碼塊1蒙揣;
執(zhí)行的代碼塊2靶溜;
……………….;
執(zhí)行的代碼塊n懒震;
}

案例:判斷一個(gè)整數(shù)是奇數(shù)還是偶數(shù)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
int nextInt = sc.nextInt();
if (nextInt % 2 == 0) {
System.out.println("是偶數(shù)");
} else {
System.out.println("是奇數(shù)");
}
System.out.println("over");
}
同樣道理如果花括號(hào)中只有一條語(yǔ)句罩息,那么花括號(hào)可以省略不寫(xiě),初學(xué)者不推薦省略挎狸。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
int nextInt = sc.nextInt();
if (nextInt % 2 == 0)
System.out.println("是偶數(shù)");
else
System.out.println("是奇數(shù)");

    System.out.println("over");
}

觀察發(fā)現(xiàn)if else語(yǔ)句有點(diǎn)類似于三元運(yùn)算符.其實(shí)三元運(yùn)算符是if else 的一種簡(jiǎn)寫(xiě)格式.
Public static void main(String[] args) {
int x = 0, y = 1, b;
// if else 語(yǔ)句
if (x > y) {
b = x;
} else {
b = y;
}
System.out.println(b);// 1
// 3元運(yùn)算
b = x > y ? x : y;
System.out.println(b); // 1
}
這兩種格式是一樣的扣汪。if else 結(jié)構(gòu) 簡(jiǎn)寫(xiě)格式: 變量 = (條件表達(dá)式)?表達(dá)式1:表達(dá)式2断楷;
三元運(yùn)算符:
好處:可以簡(jiǎn)化if else代碼锨匆。
弊端:因?yàn)槭且粋€(gè)運(yùn)算符,所以運(yùn)算完必須要有一個(gè)結(jié)果。

3. 格式三
if(判斷條件1){
執(zhí)行的代碼塊1恐锣;
}else if(判斷條件2){
執(zhí)行語(yǔ)句;
}else if(判斷條件3){
執(zhí)行語(yǔ)句茅主;
}

需求: 根據(jù)用戶定義的數(shù)值不同,打印對(duì)應(yīng)的星期英文。if 只能進(jìn)行一層判斷,if else 只能進(jìn)行兩層判斷,那么需要多層判斷時(shí)呢?星期可是有7個(gè)數(shù)的土榴。如何設(shè)計(jì)代碼诀姚?
使用if 語(yǔ)句
public static void main(String[] args) {
int x = 8;
if (x == 1) {
System.out.println("星期一");
}
if (x == 2) {
System.out.println("星期二");
}
if (x == 3) {
System.out.println("星期三");
}
}
如果這樣設(shè)計(jì)的話,第一個(gè)if語(yǔ)句執(zhí)行完畢后,第二個(gè)語(yǔ)句仍會(huì)執(zhí)行(去判斷),是一個(gè)順序結(jié)構(gòu).那么事實(shí)上當(dāng)前定義的星期之后會(huì)有一個(gè).假如,第一個(gè)已經(jīng)符合條件,那么剩余的執(zhí)行就沒(méi)有意義了。屬于邏輯錯(cuò)誤玷禽。
使用if else 赫段,如果用戶輸入的是7以外的數(shù)據(jù),那么怎么處理矢赁?就需要使用else 了
方案2:使用if else if語(yǔ)句
public static void main(String[] args) {
int x = 8;
if (x == 1) {
System.out.println("星期一");
} else if (x == 2) {
System.out.println("星期二");
} else if (x == 3) {
System.out.println("星期三");
} else if (x == 4) {
System.out.println("星期四");
} else if (x == 5) {
System.out.println("星期五");
} else if (x == 6) {
System.out.println("星期六");
} else if (x == 7) {
System.out.println("星期日");
} else {
System.out.println("請(qǐng)輸入數(shù)字1-7");
}
}
注意:
public static void main(String[] args) {
int x = 5;
if (x == 1) {
System.out.println("1");
}
if (x == 2) {
System.out.println("2");
}
if (x == 3) {
System.out.println("3");
} else {
System.out.println("4"); // 4
}
}
該if 語(yǔ)句不是一個(gè)整體,第一個(gè)if 是一個(gè)語(yǔ)句糯笙,第二個(gè)又是一個(gè)語(yǔ)句,最后的if else 又是一個(gè)語(yǔ)句。
if語(yǔ)句特點(diǎn)

  1. 第二種格式與三元運(yùn)算符的區(qū)別:三元運(yùn)算符運(yùn)算完要有值出現(xiàn)撩银。好處是:可以寫(xiě)在其他表達(dá)式中给涕。
  2. 條件表達(dá)式無(wú)論寫(xiě)成什么樣子,只看最終的結(jié)構(gòu)是否是true 或者 false额获。
    練習(xí)1: 根據(jù)用戶輸入的月份,打印出月份所屬的季節(jié).
    練習(xí)2: 根據(jù)用戶輸入的成績(jī)够庙,進(jìn)行評(píng)級(jí),根據(jù)學(xué)生考試成績(jī)劃分ABCD
    練習(xí)1:
    public static void main(String[] args) {
    int x = 1;
    if (x == 3) {
    System.out.println("spring");
    } else if (x == 4) {
    System.out.println("spring");
    }
    }

仔細(xì)觀察:發(fā)現(xiàn)if和else if要執(zhí)行的語(yǔ)句是一樣的抄邀,可不可以合并呢耘眨。當(dāng)然是可以的。怎么合并境肾?使用邏輯運(yùn)算符毅桃,那么使用哪個(gè)邏輯運(yùn)算符呢, &肯定不行准夷。需要全部為真才為真钥飞,月份是不可能同時(shí)滿足的 那么使用|連接符號(hào)即可。意思只要其中一個(gè)為真衫嵌,就為真读宙。另外可以使用短路功能。
public static void main(String[] args) {
int x = 1;
if (x == 3 || x == 4 || x == 5) {
System.out.println("spring");
} else if (x == 6 || x == 7 || x == 8) {
System.out.println("Summer");

    } else if (x == 9 || x == 10 || x == 11) {
        System.out.println("autumn");
    } else {
        System.out.println("Winter");
    } else {
        System.out.println("月份不存在");
    }
}

練習(xí)2:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入考試分?jǐn)?shù):");
double score = sc.nextDouble();
char grade;
if (score >= 90.0)
grade = 'A';
else if (score >= 80.0)
grade = 'B';
else if (score >= 70.0)
grade = 'C';
else if (score >= 60.0)
grade = 'D';
else
grade = 'F';
System.out.println("你的成績(jī)是:" + grade);

}

If語(yǔ)句常見(jiàn)的錯(cuò)誤:
1.忘記必要的括號(hào):如果代碼塊中只有一條語(yǔ)句的時(shí)候楔绞,可以省略花括號(hào)结闸,但是當(dāng)花括號(hào)將多條語(yǔ)句擴(kuò)在一起時(shí),花括號(hào)就不能在省略酒朵。
double radius = 4;
double area;
if (radius >= 0)
area = radius * radius * 3.14;
System.out.println("The area " + " is " + area);
double radius = 4;
double area;
if (radius >= 0) {
area = radius * radius * 3.14;
System.out.println("The area " + " is " + area);
}
雖然代碼一樣多桦锄,但是第一個(gè)會(huì)編譯報(bào)錯(cuò)(area沒(méi)有出初始化),第二個(gè)正常運(yùn)行蔫耽。就是因?yàn)樯倭嘶ɡㄌ?hào)结耀。所以一定要仔細(xì)。
2.if語(yǔ)句后出現(xiàn)分號(hào)
double radius = 0;
double area;
if (radius > 0); {
area = radius * radius * 3.14;
System.out.println("The area " + " is " + area);
}
注意:這是一個(gè)邏輯錯(cuò)誤,編譯和運(yùn)行都不會(huì)報(bào)錯(cuò)图甜,只是不會(huì)出現(xiàn)想要的結(jié)果碍粥。
相當(dāng)于判斷符合條件后,執(zhí)行一個(gè)空語(yǔ)句黑毅。
double radius = 0;
double area;
if (radius > 0){}{
area = radius * radius * 3.14;
System.out.println("The area " + " is " + area);
}

判斷閏年
1:什么是閏年嚼摩?可以被4整除不能被100整除,或者可以被400整除矿瘦,那么這一年就是閏年(leap year)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入年份:");

    int year = sc.nextInt();
    // 判斷年份能否被4整除
    boolean isLeapYear = (year % 4 == 0);
    // 年份能被4整除枕面,并且不能被100整除并且使用&&(and)
    isLeapYear = isLeapYear && (year % 100 != 0);
    // 年份或者能夠被400整除
    isLeapYear = isLeapYear || (year % 400 == 0);
    if (isLeapYear) {
        System.out.println(year + "是閏年!");
    }
    // 簡(jiǎn)寫(xiě)格式缚去;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        System.out.println(year + "是閏年膊畴!");
    }
}

3 選擇判斷語(yǔ)句(switch)
switch語(yǔ)句
格式:
switch(表達(dá)式)
{
case 取值1:
執(zhí)行語(yǔ)句;
break病游;
case 取值2:
執(zhí)行語(yǔ)句唇跨;
break;
…...
default:
執(zhí)行語(yǔ)句衬衬;
break买猖;
}
switch語(yǔ)句特點(diǎn):
1,switch語(yǔ)句選擇的類型只有四種:byte,short滋尉,int 玉控, char。
2,case之間與default沒(méi)有順序狮惜。先判斷所有的case高诺,沒(méi)有匹配的case執(zhí)行
default。
3,switch語(yǔ)句停止的條件是遇到了break關(guān)鍵字或者結(jié)束switch語(yǔ)句的大括號(hào)碾篡。
4,如果匹配的case或者default沒(méi)有對(duì)應(yīng)的break虱而,那么程序會(huì)繼續(xù)向下執(zhí)行,運(yùn)
行可以執(zhí)行的語(yǔ)句开泽,直到遇到break或者switch結(jié)尾結(jié)束牡拇。
5,switch case中的值必須要與switch表達(dá)式的值具有相同的數(shù)據(jù)類型穆律。而且case后跟的值必須是常量惠呼,不能跟變量。

案例:
public static void main(String[] args) {
int x = 3;
switch (x) {
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
System.out.println("ok");
break;
}
}
case 就像選擇題的答案之一峦耘。 break 就是如果該答案正確那么就可以跳出switch 了,意思就是說(shuō) 已經(jīng)找出了正確的答案了剔蹋。那么這道題也就做完了。如果 case 沒(méi)有匹配接著進(jìn)行下一個(gè)case 匹配,直到匹配為止辅髓。 最后如果都沒(méi)有匹配上,那么 switch 給提供了一個(gè)默認(rèn)的答案,就是 default泣崩。
注意: case后跟的是冒號(hào):
每個(gè)case中的執(zhí)行語(yǔ)句一定要加break少梁;
練習(xí):
需求2:根據(jù)用于指定的月份,打印該月份所屬的季節(jié).
一旦case匹配,就會(huì)順序執(zhí)行后面的程序代碼,而不管后面的case是否匹配,直到遇見(jiàn)break,利用這一特性可以讓好幾個(gè)case執(zhí)行統(tǒng)一語(yǔ)句.
345 spring 678 sunmer 9 10 11 autumn 12 1 2 winter
public static void main(String[] args) {
int x = 3;
switch (x) {
case 3:
case 4:
case 5:
System.out.println("spring");
break;
case 6:
case 7:
case 8:
System.out.println("sunmer");
break;
case 9:
case 10:
case 11:
System.out.println("autumn");
break;
case 12:
case 0:
case 1:
System.out.println("winter");
default:
System.out.println("ok");
break;
}
}

練習(xí):char 類型在switch 中的使用.
public static void main(String[] args) {
int x = 1, y = 2;
char ch = '';
switch (ch) {
case '+':
System.out.println("x
y=" + (x + y));
break;
case '-':
System.out.println("x-y="+(x-y));
break;
case '':
System.out.println("x
y="+(x*y));
break;
case '/':
System.out.println("x/y="+(x/y));
break;
default:
System.out.println("不靠譜");
}
}
if 和switch 語(yǔ)句很像,具體什么場(chǎng)景下,應(yīng)用哪個(gè)語(yǔ)句呢?
如果判斷的具體數(shù)值不多,而是符號(hào)byte,short int char 四種類型.
雖然2個(gè)語(yǔ)句都可以使用,建議使用switch語(yǔ)句.因?yàn)樾噬愿?
其他情況:
對(duì)區(qū)間判斷,對(duì)結(jié)果為boolean 類型判斷,使用if if的使用范圍更廣律想。
if 除了能判斷具體數(shù)值還能判斷區(qū)間猎莲。switch 判斷區(qū)間會(huì)很費(fèi)勁的绍弟。要寫(xiě)好多case 對(duì)于運(yùn)算結(jié)果是boolean型的 if 能判斷 switch 是不能實(shí)現(xiàn)的技即。例如:根據(jù)學(xué)生考試成績(jī)劃分ABCD A90-100 B80-89 C70-79 D60-69 E0-59。

實(shí)際開(kāi)發(fā)怎么選擇呢?
如果要對(duì)具體數(shù)值進(jìn)行判斷,并且數(shù)值不多,那么 就用switch 來(lái)完成樟遣。switch的case條件都是編譯期整數(shù)常量而叼,編譯器可以做到表格跳轉(zhuǎn)查詢,查找速度快豹悬。
但是switch 的局限性比較大必須是4種類型,并且值不多葵陵。一般都是使用if。 最后在jdk 7中對(duì)switch 進(jìn)行了增強(qiáng) 還可以判斷字符串瞻佛。5.0 增加了對(duì)枚舉的判斷脱篙。

備注:JDK7.0開(kāi)始可以使用switch可以使用字符串類型的數(shù)據(jù)了.
4 While循環(huán)
需求:需要打印一行字符串"hello gzitcast",100次
就需要將該語(yǔ)句打印100遍System.out.println("hello gzitcast");
那么如何解決該問(wèn)題伤柄?
Java提供個(gè)一個(gè)稱之為循環(huán)的結(jié)構(gòu)绊困,用來(lái)控制一個(gè)操作的重復(fù)執(zhí)行。
int count = 0;
while (count < 100) {
System.out.println("hello gzitcast");
count++;
}
System.out.println("over");
變量count初始化值為0适刀,循環(huán)檢查count<100 是否為true,如果為true執(zhí)行循環(huán)體(while后{}之間的語(yǔ)句)秤朗,輸出"hello gzitcast"語(yǔ)句,然后count自增一笔喉,重復(fù)循環(huán)取视,直到count是100時(shí),也就是count<100為false時(shí)常挚,循環(huán)停止作谭。執(zhí)行循環(huán)之后的下一條語(yǔ)句。
Java提供了三種類型的循環(huán)語(yǔ)句:while循環(huán)奄毡,do-while循環(huán)和for循環(huán)丢早。

1、while語(yǔ)句格式:
while(條件表達(dá)式)
{
執(zhí)行語(yǔ)句秧倾;
}

定義需求: 想要打印5次helloworld
public static void main(String[] args) {
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
}
2怨酝、

public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
}
}
如果是在dos里編譯和運(yùn)行,是不會(huì)停止那先,除非系統(tǒng)死機(jī)农猬。需要ctrl+c來(lái)結(jié)束。
這就是真循環(huán)或者死循環(huán)售淡。因?yàn)閤<5 永遠(yuǎn)為真斤葱。
public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
x++;
}
}
讓x自增慷垮,那么就會(huì)有不滿足條件的時(shí)候。循環(huán)就會(huì)結(jié)束揍堕。
練習(xí):想要打印出1-100之間的奇數(shù)
public static void main(String[] args) {
int x = 1;
while (x < 100) {
System.out.println(x);
x = x + 2;
}
}

public static void main(String[] args){
int x=1;
while(x<100){

        if(x%2!=0){
            System.out.print(x);
        }
        x++;
    }
    System.out.println();       
}

練習(xí)2:計(jì)算1+2+3+4+5+6+7+8+9 的值
int sum = 0;
int i = 1;
while (i < 10) {
sum = sum + i;
i++;
}
System.out.println(sum);

注意:要精確控制循環(huán)的次數(shù)料身。常犯錯(cuò)誤是是循環(huán)多執(zhí)行一次或者少執(zhí)行一次。
例如會(huì)執(zhí)行101次衩茸,想要執(zhí)行100次芹血,要么是count初始值為1,然后count<=100
要么是count初始值為0楞慈,coung<100
int count = 0;
while (count <=100) {
System.out.println("hello gzitcast");
count++;
}
System.out.println("over");

猜數(shù)字游戲:
編寫(xiě)程序隨即生成一個(gè)0-100之間的隨機(jī)數(shù)幔烛。程序提示用戶輸入一個(gè)數(shù)字,不停猜測(cè)囊蓝,直到猜對(duì)為止饿悬。最后輸出猜測(cè)的數(shù)字,和猜測(cè)的次數(shù)聚霜。并且如果沒(méi)有猜中要提示用戶輸入的值是大了還是小了狡恬。
思考:
如何生成1-100之間隨機(jī)數(shù)?
(int)(Math.random()*100)+1;
如何提示用戶輸入數(shù)字蝎宇,
Scanner sc=new Scanner(System.in);
int guessNum = sc.nextInt();
需要將隨機(jī)數(shù)和用戶輸入的數(shù)字進(jìn)行比較弟劲。

猜一次:
Scanner sc = new Scanner(System.in);
int num = (int)(Math.random()100)+1;
System.out.println("請(qǐng)輸入0-100之間整數(shù)");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
這個(gè)程序只能才一次,如何讓用戶重復(fù)輸入直到猜對(duì)夫啊?
可以使用while循環(huán)
public static void main(String[] args) {
int num = (int)(Math.random()
100)+1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("請(qǐng)輸入1-100之間整數(shù)");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}
}

該方案發(fā)現(xiàn)了問(wèn)題函卒,雖然實(shí)現(xiàn)了讓用戶不停的輸入,但是即使猜中了程序也不會(huì)停止撇眯。
那么就需要控制循環(huán)次數(shù)了报嵌。也就是while() 括號(hào)中的條件表達(dá)式。當(dāng)用戶猜測(cè)的數(shù)和系統(tǒng)生成的數(shù)字不相等時(shí)熊榛,就需要繼續(xù)循環(huán)锚国。
int num = (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);

    int guessNum = -1;
    while (guessNum != num) {

System.out.println("請(qǐng)輸入1-100之間整數(shù)");
guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}

為什么將guessNum初始化值為-1?因?yàn)槿绻跏蓟癁?到100之間程序會(huì)出錯(cuò)玄坦,因?yàn)榭赡苁且碌臄?shù)血筑。
1:首先程序生成了一個(gè)隨機(jī)數(shù)
2:用戶輸入一個(gè)數(shù)字
3:循環(huán)檢查用戶數(shù)字和隨機(jī)數(shù)是否相同,知道相同位置煎楣,循環(huán)結(jié)束

5 do while 語(yǔ)句
do while語(yǔ)句格式:
do
{
執(zhí)行語(yǔ)句豺总;
}while(條件表達(dá)式);
do while特點(diǎn)是條件無(wú)論是否滿足,
循環(huán)體至少被執(zhí)行一次择懂。

public static void main(String[] args) {
int x = 0, y = 0;
do {
System.out.println(x);
x++;
} while (x < 0);
// do while do會(huì)先執(zhí)行一次,不管是否滿足循環(huán)條件喻喳。
while (y < 0) {
System.out.println(y);
y++;
}
}

while:先判斷條件,只有條件滿足才執(zhí)行循環(huán)體困曙。
do while: 先執(zhí)行循環(huán)體表伦,再判斷條件谦去,條件滿足,再繼續(xù)執(zhí)行循環(huán)體蹦哼。
簡(jiǎn)單一句話:do while:無(wú)論條件是否滿足鳄哭,循環(huán)體至少執(zhí)行一次。
注意一個(gè)細(xì)節(jié)do while 后面的分號(hào);
案例:改寫(xiě)猜數(shù)字游戲
public static void main(String[] args) {
// 記錄用戶輸入的數(shù)字
int guess = -1;
// 記錄用戶輸入次數(shù)
int count = 0;
// 生成1-100之間隨機(jī)數(shù)
int num = (int) (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);

    // 循環(huán)猜數(shù)字
    do {
        System.out.println("請(qǐng)輸入1-100之間的數(shù)字");
        guess = sc.nextInt();
        if (guess > num) {

            System.out.println("哥們纲熏,太大了");
        } else if (guess < num) {

            System.out.println("哥們妆丘,太小了");
        } else {

            System.out.println("恭喜,中啦");
        }
        count++;

    } while (num != guess);
    System.out.println("你猜測(cè)的數(shù)字是:" + num + "猜測(cè)了" + count + "次");
}

案例:計(jì)算器
系統(tǒng)自動(dòng)生成2個(gè)隨機(jī)數(shù)用于參與運(yùn)算赤套。
系統(tǒng)生成0-4之間的隨機(jī)數(shù)飘痛,表示加減乘除取模運(yùn)算珊膜。
使用switch 進(jìn)行匹配
class Couter {
public static void main(String[] args) throws InterruptedException {
// 生成隨機(jī)數(shù)Math.random()生成0-1值容握,不包含0和1,
//乘以10得到0和10之間的數(shù)(double類型)车柠,不包含0和10
//強(qiáng)轉(zhuǎn)為int剔氏,并加1得到1和10之間的數(shù),包含1和10
int x = (int)(Math.random()10)+1;
int y = (int)(Math.random()
10)+1;
System.out.println(x);
System.out.println(y);
// 創(chuàng)建0-4隨機(jī)數(shù) 0 1 2 3 4 各表示加減乘除取模
int z = (int) (int)(Math.random()*5);
System.out.println(z);

    switch (z) {
    case 0:
        System.out.println(x + "+" + y + "=?");
        System.out.println("哥們快猜竹祷。谈跛。。塑陵。");
        Thread.sleep(2000);
        System.out.println(x + "+" + y + "=" + (x + y));
        break;
    case 1:
        System.out.println(x + "-" + y + "=?");
        System.out.println("哥們快猜感憾。。令花。阻桅。");
        Thread.sleep(2000);
        System.out.println(x + "-" + y + "=" + (x - y));
        break;
    case 2:
        System.out.println(x + "*" + y + "=?");
        System.out.println("哥們快猜。兼都。嫂沉。。");
        Thread.sleep(2000);
        System.out.println(x + "*" + y + "=" + (x * y));
        break;
    case 3:
        System.out.println(x + "/" + y + "=?");
        System.out.println("哥們快猜扮碧。趟章。。慎王。");
        Thread.sleep(2000);
        System.out.println(x + "/" + y + "=" + (x / y));
        break;
    case 4:
        System.out.println(x + "%" + y + "=?");
        System.out.println("哥們快猜蚓土。。赖淤。蜀漆。");
        Thread.sleep(2000);
        System.out.println(x + "%" + y + "=" + (x % y));
        break;
    }

}

}
計(jì)算器2:上述中只能計(jì)算一次÷祝可以使用whileu循環(huán)來(lái)不停計(jì)算嗜愈。
程序生成了3個(gè)隨機(jī)數(shù)旧蛾,前兩個(gè)數(shù)參與運(yùn)算,第三個(gè)數(shù)用于匹配運(yùn)算符蠕嫁。要注意除數(shù)為0的情況锨天。
int x = (int)(Math.random()10)+1;
Math.random() 生成0-1之間的數(shù)字,double類型
Math.random()
10 就是0-9之間的數(shù)剃毒,是double類型
(int)(Math.random()10)將double類型強(qiáng)轉(zhuǎn)成int類型病袄,去掉小數(shù)點(diǎn),便于計(jì)算赘阀。
(int)(Math.random()
10)+1益缠,生成了1到10之間隨機(jī)數(shù)。

int z = (int) (int)(Math.random()*5);
生成0-4之間的數(shù)字基公,可以用0表示加幅慌,1表示減,2表示乘轰豆,3表示除胰伍,4表示取模
為了減慢程序,使用了Thread.sleep(2000); 讓程序等待一會(huì)酸休。

6 for 循環(huán)
1.格式:for(初始化表達(dá)式骂租;循環(huán)條件表達(dá)式;循環(huán)后的操作表達(dá)式)
{
執(zhí)行語(yǔ)句斑司;
}

2.定義需求: 想要打印5次helloworld
public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
System.out.println("hello java");
}
}
3.for的執(zhí)行流程
for 知道要進(jìn)行循環(huán)渗饮,讀到x=0 的時(shí)候,在內(nèi)存中開(kāi)辟了空間,定義變量x 賦值為0宿刮。接著進(jìn)行條件判斷 x<5互站,為真,這個(gè)時(shí)候?qū)M足條件后執(zhí)行了循環(huán)體的內(nèi)容System.out.println("hello java");當(dāng)循環(huán)體執(zhí)行完畢之后,執(zhí)行x < 5;后的表達(dá)式即 x++ 糙置。x自增后變?yōu)榱? 云茸,再次進(jìn)行判斷 x<5 (int x=0 只執(zhí)行一次),如果為真就再次運(yùn)行System.out.println("hello java");如果為假谤饭,for循環(huán)結(jié)束标捺。

2、for 和while的區(qū)別
'public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
System.out.println("hello java");
}
System.out.println(x);
//x cannot be resolved to a variable

    int y = 0;
    while (y < 5) {
        System.out.println("hello world");
        y++;
    }
    System.out.println(y);

}'

  1. 錯(cuò)誤
    解釋 x 為什么會(huì)找不到,注意了變量的作用域,也就是變量的作用范圍揉抵。x 只在 for 循環(huán)的大括號(hào)內(nèi)有效,出了這個(gè)區(qū)域亡容,就無(wú)效了.在內(nèi)存中就消失了。x消失后,仍要訪問(wèn)它,肯定會(huì)報(bào)錯(cuò)的冤今。
    y 就不一樣了闺兢,y 是定義在while 外的。while循環(huán)完畢仍有效 while的初始化 動(dòng)作在外邊,循環(huán)結(jié)束后y 仍然存在屋谭。
    當(dāng)定義的y 只作為循環(huán)增量存在的話的脚囊,循環(huán)完畢后y就沒(méi)有用了,但是y還是占著一塊內(nèi)存桐磁。所以悔耘,如果定義的變量只作為循環(huán)增量存在的話,就用for 循環(huán)可以節(jié)約內(nèi)存我擂。
    其實(shí)for 和while 是可以互換的衬以。
    最后總結(jié)
    1、for里面的兩個(gè)表達(dá)式運(yùn)行的順序校摩,初始化表達(dá)式只讀一次看峻,判斷循環(huán)條件,為真就執(zhí)行循環(huán)體衙吩,然后再執(zhí)行循環(huán)后的操作表達(dá)式互妓,接著繼續(xù)判斷循環(huán)條件,重復(fù)找個(gè)過(guò)程分井,直到條件不滿足為止车猬。
    2霉猛、while與for可以互換尺锚,區(qū)別在于for為了循環(huán)而定義的變量在for循環(huán)結(jié)束時(shí)就在內(nèi)存中釋放。而while循環(huán)使用的變量在循環(huán)結(jié)束后還可以繼續(xù)使用惜浅。
    3瘫辩、最簡(jiǎn)單無(wú)限循環(huán)格式:while(true) , for(;;),無(wú)限循環(huán)存在的原因是并不知道循環(huán)多少次,而是根據(jù)某些條件坛悉,來(lái)控制循環(huán)伐厌。推薦使用while(true)

'while(true){

}
for(;;){

    }

for(;true;){

    }

'

for 練習(xí):

  1. 獲取1-10的和,并打印裸影。
  2. 1-100之間 7的倍數(shù)的個(gè)數(shù),并打印挣轨。
    public static void main(String[] args) {
    // 獲取1到10的和1+2+3+4+5+6+7+8+9+10
    int sum = 0;
    for (int x = 1; x <= 10; x++) {
    System.out.println((sum + x) + "=" + sum + "+" + x);
    sum = sum + x;
    }
    System.out.println(sum);// 55
    }

public static void main(String[] args) {
// 1-100之間 7的倍數(shù)的個(gè)數(shù),并打印。
int count = 0;
for (int x = 0; x <= 100; x++) {
if (x % 7 == 0) {
System.out.println(x);
count++;
}
}
System.out.println(count);
}

累加思想:通過(guò)變量記錄住循環(huán)操作后的結(jié)果轩猩;通過(guò)循環(huán)的形式.進(jìn)行累加的動(dòng)作卷扮。
計(jì)數(shù)器思想:通過(guò)一個(gè)變量記錄住數(shù)據(jù)的狀態(tài)變化,也是通過(guò)循環(huán)完成均践。

循環(huán)常見(jiàn)錯(cuò)誤:
多加分號(hào):在for括號(hào)后和循環(huán)體之間加分號(hào)是常見(jiàn)錯(cuò)誤晤锹。
錯(cuò)誤:
程序編譯運(yùn)行都可以通過(guò),只是不是我們想要的結(jié)果彤委。
for(int i=0;i<100;i++);{
System.out.println("hello ");
}
正確:
for(int i=0;i<100;i++){
System.out.println("hello ");
}

錯(cuò)誤鞭铆;是一個(gè)死循環(huán)
int i=0;
while(i<100);{
System.out.println("hello");
i++;
}
正確:
int i=0;
while(i<100){
System.out.println("hello");
i++;
}

語(yǔ)句的嵌套應(yīng)用
什么是嵌套形式,其實(shí)就是語(yǔ)句中還有語(yǔ)句焦影。
想要打印出矩形:

'public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
System.out.println("*");
}
}

public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
System.out.print("*");
}
}

這里用“”表示矩形的邊车遂。
public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
for(int y=0;y<6;y++){
System.out.print("
");
}
System.out.println();
}
}
forfor 嵌套for循環(huán)練習(xí)2
打印此種格式的圖案


****
***
**
*

public static void main(String[] args) {
for (int x = 5; x > 0; x--) {
for(int y=x;y>0;y--){
System.out.print("*");
}
System.out.println("");
}
}

練習(xí):

**




public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
for (int y = 0; y <= x; y++) {
System.out.print("*");
}
System.out.println("");
}

}'

練習(xí):99乘法表

'public static void main(String[] args) {
for (int x = 1; x <= 9; x++) {
for (int y = 1; y <= x; y++) {
System.out.print(y + "*" + x + "=" + x * y + '\t');
}
System.out.println(" ");
}
}'

7 break封断、continue關(guān)鍵字
break關(guān)鍵字:break 語(yǔ)句用于終止最近的封閉循環(huán)或它所在的 switch 語(yǔ)句〔暗#控制傳遞給終止語(yǔ)句后面的語(yǔ)句(如果有的話)澄港。
適用:for循環(huán) 、 switch兩種循環(huán)語(yǔ)句柄沮。
break的用法:

  1. 單獨(dú)使用回梧。
  2. 與標(biāo)簽一起使用。(標(biāo)簽:即一個(gè)名字祖搓,滿足標(biāo)識(shí)符的條件即可)狱意。
    使用細(xì)節(jié): 不要再break語(yǔ)句之后,編寫(xiě)其他語(yǔ)句拯欧,永遠(yuǎn)都執(zhí)行不到详囤,編譯報(bào)錯(cuò)。

continue關(guān)鍵字:語(yǔ)句將控制權(quán)傳遞給它所在的封閉迭代語(yǔ)句的下一次迭代镐作。(跳出本循環(huán)藏姐,執(zhí)行下一次循環(huán))。
適用于:while 该贾、 do while 羔杨、 for循環(huán)語(yǔ)句
使用細(xì)節(jié):
1. 如果continue出現(xiàn)在循環(huán)的末尾(最后一條語(yǔ)句),那么可以省略。
2. 如果continue出現(xiàn)在循環(huán)的第一條語(yǔ)句杨蛋,那么后面的語(yǔ)句都無(wú)法執(zhí)行兜材,所以編譯報(bào)錯(cuò)。

 3. 可以結(jié)合標(biāo)記使用逞力。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曙寡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寇荧,更是在濱河造成了極大的恐慌举庶,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揩抡,死亡現(xiàn)場(chǎng)離奇詭異户侥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捅膘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)添祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人寻仗,你說(shuō)我怎么就攤上這事刃泌。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵耙替,是天一觀的道長(zhǎng)亚侠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)俗扇,這世上最難降的妖魔是什么硝烂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮铜幽,結(jié)果婚禮上滞谢,老公的妹妹穿的比我還像新娘。我一直安慰自己除抛,他們只是感情好狮杨,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著到忽,像睡著了一般橄教。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喘漏,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天护蝶,我揣著相機(jī)與錄音,去河邊找鬼翩迈。 笑死持灰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帽馋。 我是一名探鬼主播搅方,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绽族!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起衩藤,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吧慢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赏表,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體检诗,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年瓢剿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逢慌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡间狂,死狀恐怖攻泼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤忙菠,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布何鸡,位于F島的核電站,受9級(jí)特大地震影響牛欢,放射性物質(zhì)發(fā)生泄漏骡男。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一傍睹、第九天 我趴在偏房一處隱蔽的房頂上張望隔盛。 院中可真熱鬧,春花似錦拾稳、人聲如沸骚亿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)来屠。三九已至,卻和暖如春震鹉,著一層夾襖步出監(jiān)牢的瞬間俱笛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工传趾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迎膜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓浆兰,卻偏偏與公主長(zhǎng)得像磕仅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子簸呈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Java經(jīng)典問(wèn)題算法大全 /*【程序1】 題目:古典問(wèn)題:有一對(duì)兔子榕订,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子...
    趙宇_阿特奇閱讀 1,841評(píng)論 0 2
  • 【程序1】 題目:古典問(wèn)題:有一對(duì)兔子蜕便,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子劫恒,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,126評(píng)論 0 41
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法轿腺,內(nèi)部類的語(yǔ)法两嘴,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法族壳,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,581評(píng)論 18 399
  • 第一章 初識(shí)javaJAVA 第一講:什么是程序?:為了讓計(jì)算機(jī)執(zhí)行某些操作或解決某個(gè)問(wèn)題而編寫(xiě)的一系列有序指令的...
    人子日月幾點(diǎn)閱讀 509評(píng)論 0 1
  • 轉(zhuǎn)眼八月仿荆,又到了新一屆大學(xué)生報(bào)道的季節(jié)贰您。準(zhǔn)大學(xué)生們坏平,你們?cè)谙胧裁矗繉?duì)擺脫厭煩已久的高度緊張讀書(shū)生活的持續(xù)興奮枉圃?對(duì)即...
    海曲三少閱讀 865評(píng)論 1 6