java 03
1、if判斷語句
1、定義語句1
選擇結構:
if選擇語句
switch選擇語句
if選擇語句:
語句定義格式1:
if(關係表示式){
語句體;
}
注意
注意事項:
1、if小括號中的語句,可以很複雜,但是最終的結果一定是boolean型別
2、只有當if語句體中的語句只有一行的時候,大括號才可以省略,建議永遠不要省略大括號
3、小括號後面可以新增分號,相當於if語句擁有一個空的語句體
程式碼示例
public class IfDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入江川的性別:");
String gender = sc.next();
//A
//B
//A.equals(B)
if("男".equals(gender));{
System.out.println("去男廁所");
System.out.println("洗手");
}
}
}
2、定義語句2
if語句定義格式2:
if(關係表示式){
語句體1;
}else{
語句體2;
}
注意
注意:
if-else語句中,只會執行其中某一個語句體,不會同時都執行!
程式碼示例
public class IfDemo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入江川的性別:");
String gender = sc.next();
//A
//B
//A.equals(B)
if("nan".equals(gender)){
System.out.println("去男廁所");
System.out.println("洗手");
}else {
System.out.println("去女廁所");
System.out.println("洗手");
}
}
}
3、定義語句3
if語句的第三種格式:
if(關係表示式1){
語句體1;
}else if(關係表示式2){
語句體2;
}...{
語句體n;
}else{
語句體n+1;
}
程式碼示例
/*
需求:
1、透過把學生考試成績分等級來引出if語句的第三種格式
90-100 優秀
80-90 好
70-80 良
60-70 及格
60一下 不及格
*/
public class IfDemo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入江川的考試成績:");
int score = sc.nextInt();
if(score>=90 && score<=100){
System.out.println("優秀");
}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("成績有誤!");
}
}
}
4、練習
//獲取三個資料中的最大值
public class IfTest1 {
public static void main(String[] args) {
int a = 4;
int b = 9;
int c = 6;
if(a<b){
if(b<c){
System.out.println("c是最大值");
}else {
System.out.println("b是最大值");
}
}else {
if(a>c){
System.out.println("a是最大值");
}else {
System.out.println("c是最大值");
}
}
}
}
2、switch語句
switch選擇語句:
語句定義格式:
switch(表示式){
case 常量值1:
表示式1;
break;
case 常量值2:
表示式2;
break;
...
default:
表示式n;
break;
}
執行流程:嚴格按照下面的流程執行。
1、先計算表示式中的值
2、然後拿著計算出來的值自上而下匹配所有的case,當某一個case後面的常量值與計算出來的值一樣的時候,
執行其中的語句體,遇到break,結束整個switch語句.
3、當所有的case都不匹配的時候,執行default中的語句體,當遇到break的時候,結束整個switch語句.
注意:
1、表示式的取值:byte,short,int,char,列舉,String
2、case後面只能跟常量,不能是變數
3、break能不能不寫?能不寫,但是會發生switch穿透!
4、default語句能不能不寫?可以不寫,但是為了程式的嚴謹性,最好加上
5、default語句是不是一定要放在所有case之後呢?不一定,可以放在switch語句中的任意位置
程式碼示例
public class SwitchDemo {
public static void main(String[] args) {
//假設我們所帶的金額,正好是購買一瓶飲料的價格,多了或少了都買不了,只有正好才可以消費
//可樂 3,脈動 5,紅牛 7,ad鈣奶 4
System.out.println("請輸入您帶的金額:");
Scanner sc = new Scanner(System.in);
int price = sc.nextInt();
switch (price) {
case 3:
System.out.println("歡迎購買一瓶 可樂!");
break;
case 4:
System.out.println("歡迎購買一瓶 ad鈣奶!");
break;
case 5:
System.out.println("歡迎購買一瓶 脈動!");
break;
case 7:
System.out.println("歡迎購買一瓶 紅牛!");
break;
default:
System.out.println("沒有您所帶金額的飲料!!");
break;
}
}
}
練習
/*
輸入月份輸出季節:
春季 3-5
夏季 6-8
秋季 9-11
冬季 12-2
*/
public class SwitchDemo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入需要檢視季節的月份:");
int season = sc.nextInt();
switch (season){
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("沒有該月份。。。");
break;
}
}
}
3、scanner
鍵盤錄入:程式在執行過程中,使用者可以根據自己的需求輸入參運算的值
實現錄入的步驟:
1、導包
import java.util.Scanner;
2、建立鍵盤錄入物件
Scanner scanner = new Scanner(System.in);
3、呼叫方法鍵盤錄入
1)輸入整數
int i = scanner.nextInt();
2)輸入字串
String i = scanner.next();
程式碼示例
public class ScannerDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入您的姓名: ");
String name = sc.next();
System.out.println("請輸入您的年齡: ");
int age = sc.nextInt();
System.out.println("姓名:" + name + ", 年齡:" + age);
}
}
4、迴圈
1、for迴圈
for迴圈:
語句定義格式:
for(初始化語句;判斷條件語句;控制條件語句){
迴圈體語句;
}
注意事項:
1、初始化條件語句,有且僅執行一遍
2、初始化條件語句可以寫在for迴圈的外面,和定義在for迴圈內部時比較,作用域不同
3、大括號可以省略,但是省略後只能作用在第一條語句上,建議,永遠不要省略
4、判斷條件語句能否不寫?可以不寫,但是會變成死迴圈
5、控制條件語句也可以不寫,但是可能會是死迴圈
一個最簡單的for死迴圈:
for(;😉{
......
}
//需求:在控制檯中輸出10行helloworld
public class ForXunDemo1 {
public static void main(String[] args) {
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
System.out.println("helloworld");
}
}
//用for迴圈改進
/*
初始化語句:定義一個變數表示範圍,每迴圈一次需要改變一次 int i = 1
判斷條件語句:10行:範圍 1-10 i<=10
控制條件語句:i++
迴圈體語句:System.out.println("helloworld");
*/
public class ForXunDemo1 {
public static void main(String[] args) {
for (int i = 1; i <= 10;i++) {
System.out.println("helloworld - " + i);
}
}
}
練習:
package com.shujia.day03;
/*
請在控制檯輸出資料1-10
請在控制檯輸出資料10-1
求出1-10之間資料之和
求出1-100之間偶數和
求出1-100之間奇數和
求5的階乘【自己實現】
在控制檯輸出所有的”水仙花數”,統計”水仙花數”共有多少個
*/
public class ForTest {
public static void main(String[] args) {
//請在控制檯輸出資料1-10
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
System.out.println("------------------------");
//請在控制檯輸出資料10-1
for (int i = 10; i > 0; i--) {
System.out.println(i);
}
System.opublic class ForTest {
public static void main(String[] args) {
//請在控制檯輸出資料1-10
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
System.out.println("------------------------");
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("1-10之間的和為:" + sum);
System.out.println("------------------------");
//求出1-100之間偶數和
//求出1-100之間奇數和
int ouSum = 0;
int jiSum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
ouSum += i;
} else {
jiSum += i;
}
}
System.out.println("1-100之間的偶數和為:" + ouSum);
System.out.println("1-100之間的奇數和為:" + jiSum);
System.out.println("------------------------");
int count = 0;
for (int i = 100; i < 1000; i++) {
int baiWei = i / 100;
int shiWei = i % 100 / 10;
int geWei = i % 10;
if ((baiWei * baiWei * baiWei + shiWei * shiWei * shiWei + geWei * geWei * geWei) == i) {
System.out.println(i);
count++;
}
}
System.out.println("水仙花數共計 " + count + " 個");
}
}
2、while迴圈
1、定義
while迴圈:
語句定義格式1:
初始化條件語句;
while(判斷條件語句){
迴圈體語句;
控制條件語句;
}
語句定義格式2:
初始化條件語句;
do{
迴圈體語句;
控制條件語句;
}while(判斷條件語句)
2、注意
1、while迴圈可以和for迴圈等價轉換
2、for迴圈和while迴圈的使用場景:
for迴圈適合明確的範圍內迴圈 【吃葡萄🍇】
當迴圈次數不明確獲取就是要求次數的時候,優先考慮while迴圈【喝水】
程式碼示例
public class WhileDemo1 {
public static void main(String[] args) {
//輸出10行hello world
for (int i = 1; i < 0; i++) {
System.out.println("hello world");
}
System.out.println("---------------------------");
int i = 1;
while (i < 0){
System.out.println("hello world");
i++;
}
System.out.println("---------------------------");
int i2 = 1;
do{
System.out.println("hello world");
i2++;
}while (i2 < 0);
}
}
練習:
package com.shujia.day03;
/*
我國最高山峰是珠穆朗瑪峰:8848m,我現在有一張足夠大的紙張,厚度為:0.01m。
請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峰的高度?
*/
public class WhileTest1 {
public static void main(String[] args) {
int high = 884800;
int thickness = 1;
int count = 0;
while (thickness<high){
thickness *=2;
count++;
}
System.out.println("共摺疊 "+count+"次");
}
5、跳轉控制語句 方法
跳轉控制語句:
break關鍵字
continue
return
1、break
break的作用:
跳出單層迴圈
跳出多層迴圈
帶標籤的跳出
格式:標籤名: 迴圈語句
標籤名要符合Java的命名規則
break: 打破,打碎,終止
使用break的注意事項:
1、break的使用需要在特定的場景下使用才有意義
2、break只能在switch選擇語句或者迴圈中使用
public class BreakDemo {
public static void main(String[] args) {
// break;
//輸出1-10,當遇到5的時候,使用break
for(int i=1;i<=10;i++){
if(i==5){
break; // 終止整個for迴圈
}
System.out.println(i);
}
System.out.println("-------------------------------------");
//需求:當j==5的時候,使用break
jc:for (int i = 1; i <= 10; i++) {
lg:for (int j = 1; j <= i; j++) {
if(j==5){
// break; // 終止最近的整個for迴圈
break jc;
}
System.out.print(j + "*" + i + "=" + (i * j)+"\t");
}
System.out.println();
}
}
}
2、continue
continue的使用場景:
在迴圈語句中
離開使用場景的存在是沒有意義的
continue的作用:
單層迴圈對比break,然後總結兩個的區別
break 退出當前迴圈
continue 退出本次迴圈
程式碼示例
public class ContinueDemo {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
if(i==5){
continue; // 結束當次迴圈,繼續下一次迴圈
}
System.out.println(i);
}
}
}
3、return
return關鍵字不是為了跳轉出迴圈體,更常用的功能是結束一個方法,也就是退出一個方法。跳轉到上層呼叫的方法。
return必須在方法中寫,一個方法只會有一個return生效,表示結束整個方法
public class ReturnDemo {
// return; // return必須在方法中寫
public static void main(String[] args) {
// return; // 結束整個方法
// System.out.println("hello world");
// return;
for(int i=1;i<=10;i++){
if(i==5){
return;
}
System.out.println(i);
}
System.out.println("hello world");
}
}