流程控制-選擇結構與循環結構
流程圖
-順序結構
-選擇結構
-循環結構
if控制語句
-簡單的語句
if(表達式){
\\語句1
\\語句2
}
-執行步驟
對表達式的結果進行判斷
如果表達式的結果爲真,則執行該語句
如果表達式的結果爲假,則跳過該語句
public static void main(String[] args){
int score = 70 ;
if(score >= 60 ){
System.out.println("成績及格。");
System.out.println("通過考試。");
}
}
-張浩Java成績大於90分,老師獎勵他iPhone6s,該怎麽做?
import java.util.Scanner;
public class zhanghao{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入張浩的成績");
int zhanghaoScore = sc.nextInt();
if(zhanghaoScore > 90){
System.out.println("獎勵ihone6s");
}
}
}
使用複雜條件的if選擇結構:
-結合運算符的優先級編寫條件:
最高的優先級:()
最低的優先級:=
優先級:!>算術運算符>關係運算符>&&>||
複雜條件使用括號提高可讀性
-張浩Java成績大於90分,并且音樂成績大於80分時,或者Java成績等於100分,音樂成績大於70分時,老師獎勵他
import java.util.Scanner;
public class zhangh{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入張浩Java的成績:");
int javaScore = sc.nextInt();
System.out.println("請輸入張浩Music的成績:");
int musicScore = sc.nextInt();
if ((javaScore > 90 && musicScore > 80)||
(javaScore == 100 && musicScore > 70)){
System.out.println("獎勵一臺iPhone11:");
}
}
}
-if else
-if else語法:
if(表達式){
\\語句1
}else{
\\語句2
}
public static void main(String[] args){
int score = 50;
if(score >= 60){ //判斷score值是否大於等於60
System.out.println("成績及格。");
}else{
System.out.println("成績不及格。");
}
}
-如果張浩Java成績大於90分,老師就獎勵他一個iPhone 6s,否則就罰他蹲馬步
import java.util.*;
public class zh{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入張浩Java的成績:");
int javaScore = sc.nextInt();
if(javaScore > 90){
System.out.println("獎勵一臺iPhone12");
}else{
System.out.println("懲罰蹲馬步");
}
}
}
import java.util.*;
public class zh{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入張浩Java的成績:");
int javaScore = sc.nextInt();
if(javaScore > 90){
System.out.println("獎勵一臺iPhone12");
}
if(javaScore <= 90){
System.out.println("懲罰蹲馬步");
}
}
}
多分支if語句
-當有多個條件判斷時,需要使用多分支if語句解決
-多重if語法
if(表達式1){
//語句1
}else if(表達式2){
//語句2
}else{
//語句3
}
-執行步驟
對表達式1的結果進行判斷
如果表達式1的結果為true,則執行語句1;否則判斷表達式2的值
如果表達式2的結果為true,則執行語句2;否則執行語句3
-如果成績大於等於90分且小於等於100分,輸出“A級”,否則如果大於等於80分,輸出“B級”,否則如果大於等於70分,輸出“C級”,否則如果大於等於60分,輸出“D級別”,低於60分輸出“E級”
public static void main(String[] args){
int score = 85 ;
if(score >= 90 && score <= 100){ //判斷score值是否大於等於90且小於等於100
System.out.println("A級");
}else if(score >= 80){ //判斷score值是否大於等於80且小於90
System.out.println("B級");
}else if(score >= 70){ //判斷score值是否大於等於70且小於80
System.out.println("C級");
}else if(score >= 60){ //判斷score值是否大於等於60且小於70
System.out.println("D級");
}else{ //score值小於60
System.out.println("E級");
}
}
-多重if選擇結構
語法:
if(成績 >=80){
//代碼塊1
}
else if(成績 >=60){
//代碼塊2
}
else{
//代碼塊3
}
-對學員的考試成績進行測評
成績>=80:良好
成績>=60:中等
成績<60:差
import java.util.*;
public class zh{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入張浩Java的成績:");
int javaScore = sc.nextInt();
if(javaScore >= 80){
System.out.println("良好");
}else if(javaScore >= 60){
System.out.println("中等");
}else if(javaScore < 60){
System.out.println("差");
}
}
-嵌套if控制語句
-語法
if(表達式1){
if(表達式2){
//語句1
}else{
//語句2
}
}else{
if(表達式3){
//語句3
}else{
//語句4
}
}
-學校進行運動會,百米賽跑跑入10秒内的學生有資格進入決賽,根據性別進入男子組和女子組
提示:字符串的比較使用 equals( )
sex.equals("男");
//時間要小於10秒
if(time < 10){
//進入決賽
if(sex.equals("男")){
//進入男子組
}else{
//進入女子組
}
}
import java.util.*;
public class zhh{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入比賽進入的時間是:");
int time = sc.nextInt();
System.out.println("請輸入此人的性別:");
String sex = sc.next();
//時間要小於10秒
if(time < 10){
//進入決賽
if(sex.equals("男")){
//進入男子組
System.out.println("進入決賽男子組");
}else{
//進入女子組
System.out.println("進入決賽女子組");
}
}else{
//淘汰
System.out.println("謝謝參與");
}
}
}
流程控制-選擇結構與循環結構-請實現如果今天是周六或周日,則準備外出。如果氣溫在30℃以上,去游泳,;否則就去爬山。
如果今天不是周六或周日,就要工作。如果天氣好,去客戶單位談業務;否則在公司上網查資料。
分析:
外層if控製語句用來判斷是否是工作日
内層if控制語句用來判斷天氣情況
實現步驟:
使用if控製語句判斷今天是否是周六或周日
如果是周六或周日,那麽進一步判斷氣溫是否在30℃以上
如果不是周六或周日,那麽進一步判斷天氣是否好
public stativ void main(String[] args){
int day=6;
int temp=31;
String weather="天氣好";
if(day==6||day==7){
if(temp>30){
//去游泳
System.out.println("游泳");
}
else{
//去爬山
System.out.println("爬山");
}
}
else{
if(“天氣好”.equals(weather)){
//去客戶單位談業務
System.out.println("去客戶單位談業務");
}
else{
//在公司上網查資料
System.out.println("在公司上網查資料");
}
}
}
switch語句
語法
switch (表達式){
case常量1:
語句;
break;
case常量2:
語句;
break;
......
default:
語句;
break;
}
-switch、case、break、default是Java的關鍵字
JDK1.7后,switch后的表達式可以是int、short、byte、char、枚舉類型、String類型表達式
case用於與表達式進行匹配
break用於終止後續語句的執行
default是可選的,當其他條件都不匹配時執行default
如果case后沒有break語句,程序將繼續向下執行,直到遇到break語句或switch語句結束
-如果成績大於等於90分且小於等於100分,輸出“A級”,否則如果大於等於80分,輸出“B級”,否則如果大於等於70分,輸出“C級”,否則如果大於等於60分,輸出“D級別”,低於60分輸出“E級”
public static void main(String[] args){
int score = 75 ;
switch(score/10){
case 10:
case 9:
System.out.println("A級"); //score值是否大於等於90分且小於等於100分
break;
case 8:
System.out.println("B級"); //成績大於等於80分
break;
case 7:
System.out.println("C級"); //成績大於等於70分
break;
case 6:
System.out.println("D級"); //成績大於等於60分
break;
default;
}
}
-產生隨機數(0-9)的方法
int random=(int)(Math.random()*10);
循環結構
Java中的循環語句結構有while循環、do-while循環、for循環等.循環結構的特點是在給定條件成立時,反復執行某程序段,直到條件不成立為止.
循環語句的主要作用是反復執行一段代碼,直到滿足一定條件為止.可以把循環分成3個部分.
-初始部分:設置循環的初始狀態
-循環體:重複執行的代碼
-循環條件:判斷是否循環的條件,如使用"i<100"判斷循環次數是否已經達到100次
-while循環
語法
變量初始化
while(循環條件){
循環體
}
關鍵字while後的小括號中的內容是循環條件
循環條件是一個布爾表達式,它的值為布爾類型"真"或"假"
大括號中的語句統稱為循環操作,又稱循環體
while語句是先判斷循環條件再執行循環體,如果第一次判斷循環條件為假,循環將一次也不執行
語句執行步驟如下:
1.首先對循環條件的結果進行判斷,如果結果為真,則執行循環語句
2.執行完畢後繼續對循環條件進行判斷,如果為真,繼續執行
3.如果結果為假,則跳過循環語句,執行後面的語句
-請使用while循環實現1+2+3+…+100的求和計算
public static void main(String[] args){
int sum = 0;
int i = 1;
while(i<100){
sum += i;
i++;
}
System.out.println("sum="+sum);
}
輸出結果:5050
-張浩Java考試成績未達到自己的目標。爲了表明自己勤奮學習的決心,他決定寫一百遍“好好學習,天天向上!”
public class Test{
public static void main(String[] args){
int i = 1;
while(i<100){
System.out.println("張浩抄寫第"+i+"邊");
i++;
}
}
}
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String con = "否";
while(con.equals("否")){
//操作
System.out.println("上午學習理論,下午上機操作");
System.out.println("張浩學習是否合格?");
con = sc.next();
}
}
}
-do-while
語法
do{
循環體
}while(循環條件);
步驟:
do-while循環以關鍵字do開頭
大括號括起來的是循環體
最後的while關鍵字和緊隨其後的小括號括起來的是循環條件
-請使用do-while循環實現1+2+3+…+100的求和計算
public static void main(String[] args){
int sum = 0;
int i = 1;
do{
sum += 1;
i++;
}while(i<=100);
System.out,println("sum="+sum);
}
輸出結果:5050
-經過幾天學習,老師給張浩一道測試題,讓他先上機編寫程序完成,然後老師檢查是否合格。如果不合格,則繼續編寫
import java.util.*;
public calss Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String con = "否";
do{
System.out.println("張浩做上機測試");
System.out.println("張浩學習是否合格");
con = sc.next();
}while(con.equals("否"));
}
}
-for循環
語法:
for(表達式1;表達式2;表達式3){
循環體
}
更直觀地表達為
for(變量初始化;循環條件;修改循環條件變量的值){
循環體
}
for循環以關鍵字for開頭
大括號括起來的是循環體
表達式1、表達式2、表達式3分別用來實現變量初始化、判斷循環條件和修改for循環變量的值
步驟:
-首先執行表達式1,一般是進行變量初始化操作
-然後執行表達式2,即對循環條件進行判斷
-如果結果為真,則執行循環體
-循環語句執行完畢後執行表達式3,改變循環變量的值,再次執行表達式2,如果結果為真,繼續循環
-如果結果為假,終止循環,執行後面的語句
-輸入一名學生的姓名和他的5門課成績,求出平均分並顯示
public static void main(String[] args){
int score; //每門課的成績
int sum = 0; //成績之和
double avg = 0.0; //平均分
Scanner input = new Scanner(System.in);
System.out.println("輸入學生姓名: "); //接收學生姓名
String name = input.next(); //循環5次錄入5門功課成績
for(int i = 0;i<5;i++){
System.out.println("請輸入5門功課中第"+(i+1)+"門課的成績");
score = input.nextInt(); //接收1門課的成績
sum = sum + score; //計算成績之和
}
avg = sum/5; //計算平均分
System.out.println(name+"的平均分是: "+avg);
}
-輸出100次“好好學習,天天向上!”
int i=0;
while(i<100){
System.out.println("好好學習!");
i++;
}
for(int i=0;i<100;i++)
System.out.println("好好學習!");
}
import java.util.*;
public calss Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
for(int i=1;i<=100;i++){
System.outln("執行了"+i+"次");
}
}
}
-循環輸入某同學S1結業考試的5門功課成績,并計算平均分
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學生姓名: ");
String studentName = sc.next(); //接收學生姓名
int totalScore = 0;
for(int i=0;i<5;i++){
System.out.println("請輸入第"+(i+1)+"課程的成績: ");
sc.next=Int();
//totalScore += sc.nextInt();
totalScore = totalScore + sc.nextInt();
}
System.out.println(studentName + "的平均分是: "+(totalScore / 5.0);
}
}
-用for循環實現以下加法表:
0 + 6 = 6
1 + 5 = 6
2 + 4 = 6
3 + 3 = 6
4 + 2 = 6
5 + 1 = 6
6 + 0 = 6
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個值: ");
int num1 = sc.nextInt();
for(int maxNum = num1,int minNum = 0;minNum <= num1;minNum++,maxNum--){
System.out.println(minNum+"+"+maxNum+"="+(num1));
}
}
}
-多重循環
多重循環指一個循環語句的循環體中再包含循環語句,又稱嵌套循環.循環語句內可以嵌套多層循環.同時,不同的循環語句可以相互嵌套.
while(循環條件1){
循環語句1
for(循環條件2){
循環語句2
}
}
-計算若干名學生每人5門課程的平均分
public static void main(String[] args){
String end = null;
do{
int score;
int sum = 0;
double avg = 0.0;
Scanner input = new Scanner(System.in);
System.out.println("輸入學生姓名: ");
String name = input.next();
for(int i = 0;i<5;i++){
System.out.println("請輸入5門課程中第"+(i+1)+"門課程的成績: ");
score = input.nextInt();
sum = sum = score;
}
avg = sum/5;
System.out.println(name+"的平均分是"+avg);
System.out.println("\n繼續輸入嗎(Y/N)");
end = input.next();
}while(end.equals("Y")||end.equals("Y"));
System.out,println("成績錄入結束");
}
-使用多重循環輸出以下圖形
public class hw5{
public static void main(String[] args){
for(int i =0;i<5;i++){
for(int j = 0;j<5;j++){
System.out.print("*");
}
System.out.println();
}
System.out.println();
}
}
import java.util.*;
public class test1{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// System.out.println("您先想要几行数字:");
//
int num = 8;
for(int i = 1;i<=num;i++) {
for(int j = 0;j<num-i;j++) {
System.out.print(" ");
}
for(int k = 1;k<=2*i-1;k++) {
System.out.print(i);
}
System.out.println();
}
}
}
import java.util.*;
public class test0421{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num = input.nextInt();
System.out.println("Please scan out number:");
for(int i = 0;i<num;i++){
for(int x = 0;x<i;x++){
System.out.print(" ");
}
for(int j=0;j<2*(num-i)-1;j++){
System.out.print("*");
}
System.out.println(" ");
}
}
}
-使用多重循環輸出九九乘法表
public class hw5{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+" ");
}
System.out.println();
}
}
}
-循環對比
-while循環
變量初始化
while(循環條件){
循環體
}
-do-while循環
變量初始化
do{
循環體
}while(循環條件);
-for循環
for(變量初始化;循環條件;修改循環變量;){
循環體
}
執行順序不同:
-while循環:先判斷循環條件,再執行循環.如果條件不成立,退出循環
-do-while循環:先執行循環體,再判斷循環條件,循環體至少執行一次
-for循環:先執行變量初始化部分,再判斷循環條件,然後執行循環體,最後進行循環變量的計算.如果條件不成立,跳出循環
適用情況不同:
-在解決問題時,對於循環次數確定的情況,通常使用for循環;對於循環次數不確定的情況,通常選用while循環和do-while循環
-在實際開發中,經常會遇到需要改變循環流程的需求.此時,就需要使用跳轉語句
跳轉語句
-使用场合
break常用于switch结构和循环结构中
continue一般用于循环结构中
-作用
break语句终止某个循环,程序跳转到循环快外的下一条语句
continue跳出本次循环,进入下一次循环
双重冲循环亦如此
-break語句
-break語句在循環中的作用是終止當前循環,在switch語句中的作用是終止switch
-請實現輸出數字1~10,若遇到4的倍數程序自動退出
public static void main(String[] args){
for(int i = 1;i < 10;i++){
if(i % 4 ==0){
break;
}
System.out,println(i+"");
}
System.out.println("循環結束.");
}
-用戶輸入字符串並進行顯示,直到輸入"bye"為止,請使用break語句實現
public stativ void main(String[] args){
//定義掃描器
Scanner input = new Scanner(System.in);
//定義字符串
String str = "";
while(true){
System.out.println("請輸入字符串: ");
str = input.next();
System.out.println("您輸入的字符串是: "+str);
if("bye".equals(str))
break;
}
System.out.println("輸入結束");
}
-描述4000米長跑比賽
public class Test{
public static void main(String[] args){
for(int i=1;i<=500;i++){
System.out.println("跑了"+i+"米")
if(i==100){
//太累了
break;
}
}
}
}
-循環錄入某學生5門課的成績並計算平均分,如果某分數錄入為負,停止錄入并提示錄入錯誤
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學生姓名");
String studentName = sc.next();
int totalScore = 0;
int flag = 0;
for(int i=1;i<=5;i++){
System.out.println("請輸入第"+i+"門成績:");
int score = sc.nextInt();
if(score<0){
flag = 1;
System.out.println("分數錄入錯誤,請重新輸入:");
break;
}
totalScore += score;
}
System.out.println("總成績是:"+totalScore);
}
}
-1~10之間的整數相加,得到纍加值為20的當前數
public class Test{
public static void main(String[] args){
int total = 0;
for(int i=1;i<=10;i++){
total += i;
if(total > 20){
System.out.println("當前綜合大於20的數是: "+i);
break;
}
}
}
}
-continue語句
-continue語句的作用是強制循環提前返回,也就是讓循環跳過本次循環中的剩餘代碼,然後進行下一次循環
-只能用在循環裏
-請實現輸出1~10中非4的倍數的數字
public static void main(String[] args){
for(int i = 1;i<10;i++){
if(i%4==0){
continue;
}
System.out.println(i+"");
}
System.out.println("循環結束.");
}
-輸出1~100之間能被6整除的數,請使用continue語句實現
public static void main(String[] args){
for(int i = 1;i<=100;i++){
//判斷i是否能被6整除
if(i%6!=0)
continue;
System.out.println(i);
}
}
輸出結果:
6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
96
-循環錄入JAVA課的學生成績,統計分數大於等於80分的學生比例
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學生的總人數:");
int totalStudent = sc.nextInt();
int count = 0;
for(int i =1;i<totalStudent;i++){
System.out.println("請輸入第"+i+"個學生成績");
int score = sc.nextInt();
if(score>=80){
//判斷是否大於等於80分
count++;
continue;
}
}
System.out.println("80分以上的學生人數是: "+count);
System.out.println("80分以上所占的比利是:"+((count+0.0)/totalStudent+100.0));
}
}
-求1~10之間所有的偶數之和
public class Test{
public static void main(String[] args){
int total = 0;
for(int i = 1;i <=10;i++){
if(i%2==0){
total +=1;
continue;
}
}
System.out.println("1~10偶數和是:"+total);
}
}
-從鍵盤輸入一位整數,當輸入17時,輸出“星期一”“星期天”
輸入其他數字時,提示用戶重新輸入
import java.util.*;
public class hw7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int week = 0;
do {
System.out.println("請輸入1~7之間的數字,輸入0請重新輸入:");
week = input.nextInt();
if(week>=8 || week<0) {
System.out.println("請輸入1~7之間大的合理數字,輸入錯誤:");
continue;
}
switch(week) {
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;
}
}while(week != 0);
System.out.println("結束執行");
}
}
程序调试
-编写程序过程中有时出现错误,但不好发现和定位错误,有什么好的方法?
1.通过代码阅读或者加输出语句查找程序错误
public static void main(String[] args){
int total = 0;
for(int i = 1;i <=10;i++){
if(i%2==0){
total +=1;
continue;
}
}
System.out.println(“1~10偶數和是:”+total);
}
}
-從鍵盤輸入一位整數,當輸入1~7時,輸出“星期一”~“星期天”
輸入其他數字時,提示用戶重新輸入
```JAVA
import java.util.*;
public class hw7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int week = 0;
do {
System.out.println("請輸入1~7之間的數字,輸入0請重新輸入:");
week = input.nextInt();
if(week>=8 || week<0) {
System.out.println("請輸入1~7之間大的合理數字,輸入錯誤:");
continue;
}
switch(week) {
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;
}
}while(week != 0);
System.out.println("結束執行");
}
}
程序调试
-编写程序过程中有时出现错误,但不好发现和定位错误,有什么好的方法?
1.通过代码阅读或者加输出语句查找程序错误
2.当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是”程序调试“