1. 程式人生 > 其它 >Java流程控制(一)

Java流程控制(一)

Java流程控制(一)

Scanner類

  1. 作用:

    • 可以通過Scanner類獲取使用者輸入

      Scanner s = new(System.in);//將使用者輸入賦值給s
      
      • 使用next()或nextLine()方法獲取輸入的字串

      • 在讀取前一般用hasNext()與hasNextLine()判斷是否還有 輸入的資料

      • 用完scanner之後要呼叫close()方法關掉(節省資源)

        public class Demo1 {
            public static void main(String[] args) {
                Scanner s = new Scanner(System.in);//將使用者輸入賦值給s
                //通過hasNext每次判斷是否有句子輸入
                if(s.hasNext()){
                    String str = s.next();//識別一句,識別完一句之後游標移動到下一句,當再次用next()時會識別下一句
                    System.out.println("輸出內容為:"+str);
                }
                s.close();//用完之後要關掉
            }
        }
        輸入:sxw 
        輸出:
            輸出內容為:sxw
        
        public class Demo1 {
            public static void main(String[] args) {
                Scanner s = new Scanner(System.in);//將使用者輸入賦值給s
                //進行迴圈,每次判斷是否還有句子,當沒有句子時結束
                while(s.hasNext()){
                    String str = s.next();//識別一句,識別完一句之後游標移動到下一句,當再次用next()時會識別下一句
                    System.out.println("輸出內容為:"+str);
                }
                s.close();//用完之後要關掉
            }
        }
        輸入:ad fs gg
        輸出:
            輸出內容為:ad
            輸出內容為:fs
            輸出內容為:gg
        
  2. 方法:

    • next():

      • 只有讀到有效字元後才能結束輸入
      • 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉。(例:” sss“會成為"sss")
      • 對輸入有效字元之後遇到的空白,會被作為分隔符或結束符。(例:”a1 b2 c3“會成為"a1" "b2" "c3")
      • next()不能得到帶有空格的字串
    • nextLine():

      • 以Enter(回車)為結束符,也就是說nextLine()方法返回的是輸入字元前的所有字元

      • 可以獲得空白

        public class Demo1 {
            public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                if (s.hasNext()){
                    String str=s.nextLine();
                    System.out.println("輸出內容為:"+str);
                }
                s.close();//用完之後要關掉
            }
        }
        輸入:ad fs gg
        輸出:
            輸出內容為:ad fs gg
        
        public class Demo2 {
            public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                    String str=s.nextLine();
                    System.out.println("輸出內容為:"+str);
                s.close();//用完之後要關掉
            }
        }
        輸入:ad fs gg
        輸出:
            輸出內容為:ad fs gg
        
      • hasNext():判斷是否有資料輸入

      • hasNextInt():判斷是否有整數輸入

      • hasNextDouble():判斷是否有Double資料輸入

      • hasNext..():判斷是否有..資料輸入(..中可以填入Int、Double等等)

      • next():讀字串(String型別)

      • nextDouble():讀Double型別資料

      • nextInt():讀Int型別資料

      • next..():讀..型別資料

      • 例:輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並輸出執行結果:

        //我們可以輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並輸出執行結果
        import java.util.Scanner;
        public class Demo2 {
            public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                double sum = 0;
                int num=0;
                //scanner.hasNextDouble()判斷是否有Double型別的資料輸入,如果不是Doule型別(比如x),則跳出迴圈
                while(scanner.hasNextDouble()){
                    sum+=scanner.nextDouble();
                    num++;
                }
                scanner.close();
                System.out.println("總和為:"+sum);
                System.out.println("平均數為:"+(sum/num));
            }
        }
        輸入:
            20
            30
            40
            x
        輸出:
            總和為:90.0
            平均數為:30.0