第三天 Scanner和流程控制
阿新 • • 發佈:2021-06-12
Java流程控制
使用者互動Scanner
package com.zhang.scanner; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { //建立一個掃描器物件,接收鍵盤資料 Scanner scan = new Scanner(System.in); System.out.println("使用next方式接收"); //判斷使用者有沒有輸入字串 if(scan.hasNext()){ //接收使用者的輸入 String str =scan.next(); // 程式會等待使用者輸入完畢 System.out.println("輸入的內容為:"+str); } //凡是IO流的類如果不關閉,會一直佔用資源。養成好習慣,用完就關掉 scan.close(); } }
package com.zhang.scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("使用NextLine接收:"); if (scanner.hasNextLine()){ // 判斷是否還有輸入 String str = scanner.nextLine(); System.out.println("輸出內容為:"+str); } scanner.close(); } }
package com.zhang.scanner; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double sum = 0,x; int m = 0; System.out.println("輸入數字"); while (scanner.hasNextDouble()){//輸入是否為數字 x = scanner.nextDouble(); sum+=x; m++; System.out.println("你輸入了第"+m+"個數"+x); } scanner.close(); System.out.println("總共輸入了"+m+"個數,平均值為"+(sum/m)+",和為"+sum); } }
順序結構
選擇結構
if單選擇結構
package com.zhang.struct;
import java.util.Scanner;
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入內容");
String s = scanner.nextLine();
//s.equals 字串比較函式
if(s.equals("Hello")){//單項選擇結構
System.out.println(s);
}
System.out.println("END");
scanner.close();
}
}
if雙選擇結構
package com.zhang.struct;
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績");
int score = scanner.nextInt();
//小於60不及格
if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
}
if多選擇結構
只會選擇其中一個分支執行
package com.zhang.struct;
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績");
int score = scanner.nextInt();
if(score==100){
System.out.println("滿分");
}else if(score<100 && score>=90){
System.out.println("A級");
}else if(score<90 && score>=80){
System.out.println("B級");
}else if(score<80 && score>=60){
System.out.println("C級");
}else if(score<60 && score >=0){
System.out.println("D級");
}else{
System.out.println("成績不合法");
}
scanner.close();
}
}
巢狀的if結構
switch多選擇結構
package com.zhang.struct;
import java.util.Scanner;
public class SwitchDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String grade = scanner.next();
// case穿透,匹配項沒有break,會執行之後的所有語句
switch (grade){ // switch 匹配一個具體的值
case "A":
System.out.println("優秀");
break; // 可選
case "B":
System.out.println("良好");
break;
case "C":
System.out.println("一般");
break;
case "D":
System.out.println("差");
break;
default: // 可選
System.out.println("未知等級");
break;
}
}
}
迴圈結構
迴圈有以下三種:
while迴圈
package com.zhang.struct;
public class WhileDemo02 {
public static void main(String[] args) {
//1+2+3+..+100的和
int num = 0;
double sum = 0;
while (num<100){
num++;
sum+=num;
}
System.out.println(sum);
}
}
do...while迴圈
package com.zhang.struct;
public class DoWhileDemo02 {
public static void main(String[] args) {
int a = 0;
while (a<0){ //不會執行
a++;
System.out.println(a);
}
System.out.println("=========================");
do{ // 會先執行一次,再判斷
a++;
System.out.println(a);
}while(a<0);
}
}
for迴圈
package com.zhang.struct;
public class ForDemo01 {
public static void main(String[] args) {
/*
* for迴圈說明:
* 最先開始執行初始化步驟,可以宣告一種型別,但可以初始化一個或多個迴圈控制變數,也可以是空語句
* 然後檢測布林表示式,如果為true,執行迴圈體,如果為false,迴圈終止
* 執行一次迴圈後更新迴圈控制變數(迭代因子控制迴圈變數的增減)
* 再次檢測布林表示式,迴圈上面過程
*/
// 初始化 條件判斷 迭代
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
System.out.println("for迴圈結束");
/*
for (; ; ){ 死迴圈
}
初始化多個迴圈控制變數
for (int a=1,b=1;;){
}
*/
}
}
九九乘法表
package com.zhang.struct;
public class ForDemo04 {
public static void main(String[] args) {
//九九乘法表
for (int i=1;i<=9;i++){
for (int j=1;j<=i;j++)
System.out.print(j+"*"+i+"="+i*j+"\t");
System.out.println();
}
}
}
增強for迴圈
主要用來遍歷陣列和集合
package com.zhang.struct;
public class ForDemo05 {
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6,7,8,9};
//增強for迴圈
for (int x:num) //將陣列遍歷,把值賦給x
System.out.print(x+" ");
System.out.println("\n========================");
//使用普通for迴圈
for (int i=0;i<9;i++)
System.out.print(num[i]+" ");
}
}
break和continue
break
package com.zhang.struct;
public class BreakDemo01 {
public static void main(String[] args) {
int i=0;
while (i<1000){
i++;
System.out.println(i);
if (i==15)
break; // 使用break退出迴圈
}
}
}
continue
package com.zhang.struct;
public class ContinueDemo01 {
public static void main(String[] args) {
int i=0;
while (i<30){
i++;
if(i%5==0){
continue; //跳過本次迴圈,直接開始下一次迴圈
}
System.out.println(i);
}
}
}
列印三角形
package com.zhang.struct;
public class TestDemo01 {
public static void main(String[] args) {
//練習題 列印三角形
for (int j=1;j<=5;j++){ //控制三角形高度
for (int i=5;i>=j;i--) //列印每一行開始的空格5,4,3,2,1
System.out.print(" ");
for (int a=1;a<=j;a++) //列印左半個三角形1,2,3,4,5
System.out.print("*");
for (int x=1;x<j;x++) //列印右半個三角形0,1,2,3,4
System.out.print("*");
System.out.println(); //換行
}
}
}
反編譯
將Class檔案複製到IDEA工作資料夾中可以檢視原始碼