1. 程式人生 > 其它 >java學習筆記——java流程控制01.使用者互動Scanner

java學習筆記——java流程控制01.使用者互動Scanner

用java提供的scanner類獲取使用者輸入

使用者互動Scanner

一、Scanner物件

java提供了Scanner工具類來獲取使用者的輸入

需要匯入java包

import java.util.Scanner;

基本語法

Scanner s = new Scanner(System.in);

例項:

import java.util.Scanner;

public class Demo {
    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();	//IO流的類如果不關閉就會一直佔用資源
    }
}

這裡遇到一個next和nextLine的使用問題,next在遇到空格的時候就直接輸出了,而nextLine是把回車作為結束符,這裡如果用next方法獲取輸入的話,輸出的內容就變成了“Hello”,我想一般情況下應該都是使用nextLine,那為什麼不直接拋棄next呢?查了一下發現nextLine使用過程中有可能出現問題,把連結貼上來,方便自己解決問題。

Java中.next()和.nextLine()的區別-CSDN部落格

【Java常見問題】Scanner中nextLine()方法沒有執行就直接跳過了-CSDN部落格

二、Scanner進階使用

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        float f = 0.0f;
        System.out.println("請輸入整數:");
        //判斷是否輸入整數
        if (scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("輸入的整數是:"+i);
        }else{
            System.out.println("輸入的不是整數!");
        }
        System.out.println("請輸入小數:");
        //判斷是否輸入小數
        if (scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("輸入的小數是:"+f);
        }else{
            System.out.println("輸入的不是小數!");
        }
        scanner.close();	//關閉scanner
    }
}

例子:求輸入的數的和與平均數

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int n = 0;
        while (scanner.hasNextDouble()){
            sum += scanner.nextDouble();
            n++;
        }
        double ave = sum/n;
        System.out.println("輸入的" + n + "個數的和為" + sum);
        System.out.println("輸入的" + n + "個數的平均數為" + ave);
        scanner.close();
    }
}

疑問:java中回車並不會結束事件,除了輸入非double型資料來結束迴圈,還有沒有其他方式可以結束demo中的迴圈?