常見物件-Scanner類

ZHOU_VIP發表於2017-05-07

Scanner的概述和構造方法原理:


package cn.itcast_01;

/*
 * Scanner:用於接收鍵盤錄入資料。
 * 
 * System類下有一個靜態的欄位:
 * 		public static final InputStream in; 標準的輸入流,對應著鍵盤錄入。
 * 
 * 		InputStream is = System.in;
 * 
 * class Demo {
 * 		public static final int x = 10;
 * 		public static final Student s = new Student();
 * }
 * int y = Demo.x;
 * Student s = Demo.s;
 * 
 * 
 * 構造方法:
 * 		Scanner(InputStream source)
 */
import java.util.Scanner;

public class ScannerDemo {
	public static void main(String[] args) {
		// 建立物件
		Scanner sc = new Scanner(System.in);

		int x = sc.nextInt();
		
		System.out.println("x:" + x);
	}
}

Scanner類的hasNextXxx()和nextXxx()方法:


package cn.itcast_02;

import java.util.Scanner;

/*
 * 基本格式:
 * 		public boolean hasNextXxx():判斷是否是某種型別的元素
 * 		public Xxx nextXxx():獲取該元素
 * 
 * 舉例:用int型別的方法舉例
 * 		public boolean hasNextInt()
 * 		public int nextInt()
 * 
 * 注意:
 * 		InputMismatchException:輸入的和你想要的不匹配
 */
public class ScannerDemo {
	public static void main(String[] args) {
		// 建立物件
		Scanner sc = new Scanner(System.in);

		// 獲取資料
		if (sc.hasNextInt()) {
			int x = sc.nextInt();
			System.out.println("x:" + x);
		} else {
			System.out.println("你輸入的資料有誤");
		}
	}
}

Scanner獲取資料出現的小問題及解決方案:


package cn.itcast_03;

import java.util.Scanner;

/*
 * 常用的兩個方法:
 * 		public int nextInt():獲取一個int型別的值
 * 		public String nextLine():獲取一個String型別的值
 * 
 * 出現問題了:
 * 		先獲取一個數值,在獲取一個字串,會出現問題。
 * 		主要原因:就是那個換行符號的問題。
 * 如何解決呢?
 * 		A:先獲取一個數值後,在建立一個新的鍵盤錄入物件獲取字串。
 * 		B:把所有的資料都先按照字串獲取,然後要什麼,你就對應的轉換為什麼。後面會學到把字串轉換成其他型別。
 */
public class ScannerDemo {
	public static void main(String[] args) {
		// 建立物件
		Scanner sc = new Scanner(System.in);

		// 獲取兩個int型別的值
		// int a = sc.nextInt();
		// int b = sc.nextInt();
		// System.out.println("a:" + a + ",b:" + b);


		// 獲取兩個String型別的值
		// String s1 = sc.nextLine();
		// String s2 = sc.nextLine();
		// System.out.println("s1:" + s1 + ",s2:" + s2);


		// 先獲取一個字串,再獲取一個int值
		// String s1 = sc.nextLine();
		// int b = sc.nextInt();
		// System.out.println("s1:" + s1 + ",b:" + b);


		// 先獲取一個int值,再獲取一個字串。先獲取一個數值,在獲取一個字串,會出現問題
		// int a = sc.nextInt();
		// String s2 = sc.nextLine();
		// System.out.println("a:" + a + ",s2:" + s2);

		int a = sc.nextInt();
		Scanner sc2 = new Scanner(System.in);
		String s = sc2.nextLine();
		System.out.println("a:" + a + ",s:" + s);	
		
	}
}



相關文章