天天看點

Java程式中如何輸入資料

剛接觸Java的小夥伴兒肯定跟我一樣都有一個困惑,就是怎麼在Java程式中輸入資料。我一開始還天真的以為它跟C和C++一樣用scanf或cin,但其實Java裡根本沒有scanf和cin。

看了一些部落格之後,了解了一些關于Java輸入資料的方法(不過也有些大佬的部落格,小白的我表示沒看懂),但感覺其中有一種用着很友善。

下面給大家介紹一下我認為最簡便實用的一種——Scanner類。

根據以下代碼的具體操作先簡單了解一下Scanner的使用:

package first;
import java.util.Scanner;

public class Input {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);//定義scanner,等待輸入
		System.out.println("請輸入你的姓名:");
		String name = in.nextLine();//字元類型的輸入方式
		System.out.println(name);
		System.out.println("請輸入你的年齡:");
		int age = in.nextInt();//整數類型的輸入方式
		System.out.println(age);
		System.out.println("請輸入你的身高:");
		double height = in.nextDouble();//小數類型的輸入方式
		System.out.println(height);

	}

}
           

Scanner類位于java.util.Scanner包中,是以在程式前面要加上此包。

其中Scanner in = new Scanner(System.in);這一句是關鍵。這一句的意思是:通過new Scanner(System.in)建立一個Scanner,控制台會一直等待輸入,直到敲Enter鍵結束,把所輸入的内容傳給Scanner,作為掃描對象。

然後如果想要擷取輸入的内容,就需要調用Scanner的nextLine()方法,是以就用到了String name = in.nextLine(),int age = in.nextInt(),double height = in.nextDouble()這三句來擷取輸入的内容。

如代碼所示,Scanner類還是很好使用的,不管是字元串,整數還是浮點型,隻需要做一點小小的變化,就可以實作輸入功能。

但是這裡面有一點需要注意一下,就是nextLine()方法會吃回車符,就比如下面這個代碼:

package first;
import java.util.Scanner;

public class Input {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);//定義scanner,等待輸入
		System.out.println("請輸入你的姓名:");
		String name = in.nextLine();//字元類型的輸入方式
		System.out.println(name);
		System.out.println("請輸入你的年齡:");
		int age = in.nextInt();//整數類型的輸入方式
		System.out.println(age);
		System.out.println("請輸入蘋果的英文:");
		//String s = in.next();
		String s = in.nextLine();
		System.out.println(s);
		System.out.println("請輸入你的身高:");
		double height = in.nextDouble();//小數類型的輸入方式
		System.out.println(height);
		
	}

}
           

你運作一下就會發現程式并沒有讓你輸入蘋果的英文,而是直接回車了,那是因為你輸入完年齡之後的那個回車被nextLine()吃掉了,是以它并沒有輸出什麼,但如果你用in.next()的話,它是可以輸入的。

(下面是兩種運作結果)

這是in.nextLine()的運作結果:

Java程式中如何輸入資料

這是in.next()的運作結果:

Java程式中如何輸入資料

最後補充一下nextLine()和next()的差別:

nextLine()方法傳回的是Enter鍵之前的所有字元,它是可以得到帶空格的字元串的。

next()會自動消去有效字元前的空格,隻傳回輸入的字元,不能得到帶空格的字元串。

更新:

如果要輸入帶空格的字元串的話,可以添加in.nextLine();語句吃掉回車符,如下

package first;
import java.util.Scanner;

public class Input {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);//定義scanner,等待輸入
		System.out.println("請輸入你的姓名:");
		String name = in.nextLine();//字元類型的輸入方式
		System.out.println(name);
		System.out.println("請輸入你的年齡:");
		int age = in.nextInt();//整數類型的輸入方式
		System.out.println(age);
		System.out.println("請輸入蘋果的英文:");
		//String s = in.next();
        in.nextLine(); //吃掉回車符
		String s = in.nextLine();
		System.out.println(s);
		System.out.println("請輸入你的身高:");
		double height = in.nextDouble();//小數類型的輸入方式
		System.out.println(height);
		
	}

}
           

運作結果如下:

Java程式中如何輸入資料