1. 程式人生 > >判斷輸入的內容是整數、小數、還是非整非小數

判斷輸入的內容是整數、小數、還是非整非小數

要求:使用者從控制檯接收一個字串,通過程式判斷該字串是整數,還是小數。如果既不是整數也不是小數,程式輸出“數字格式不正確”。

要點:

1.定義要儲存的型別是double  2.try...catch 的使用,篩選掉非整數非小數  3.整數與小數的不同之處在於:      >>(1)小數點      >>(2)若輸入的小數部分的全是0,應該屬於小數還是整數    以上思路基於將小數點後全為零的數也轉化為整型輸出  若要將小數點後全為零的當作小數輸出呢?      -->未解  這時考慮整型與小數的區別在於輸入的字串中是否包含小數點  非整非小數的字串也包含小數點呢?      -->未解

import java.util.Scanner;

public class Topic11 {
	public static void main(String[] args) {
		
		Scanner input=new Scanner(System.in);
		//定義變數儲存輸入的字串
		//注意,雖說是字串,但是重點在於區分整數和小數,
		//所以該字串的型別可定義為雙精度浮點型
		//將非整數或小數的字串去掉
		double num = 0.00;
		//巧妙之處-->try...catch
		//因為定義要儲存的型別是double型,
		//所以非double型的會丟擲異常,這裡處理異常的方式就是按要求輸出"格式不正確"
		
		try {
			System.out.println("請輸入字串");
			num=input.nextDouble();
		} catch (Exception e) {
			System.out.println("數字格式不正確");
			input.close();
			return;
		}
		
		//將num儲存為字串型別,注意型別類配的問題
		//num為double型,後邊加空格可轉換為字串型別
		String numString=num+""; 
		
		//小數點出現的位置下標
		int a=numString.indexOf(".");
		//System.out.println(a);		
		
		//將小數部分取出
		String numAfter=numString.substring(a+1, numString.length());
		
		//將小數部分轉化為字元陣列,便於後邊的遍歷操作
		char[] nums=numAfter.toCharArray();
		
		//遍歷過程中,如果存在非零數,說明是小數,否則是整數
		for (int i = 0; i < nums.length; i++) {
			if (nums[i]!='0') {
				System.out.println(num+"是小數");
				input.close();
				return;
			}
		}
		
		//將帶小數點但小數點後全為零的數強制轉化為整型輸出
		System.out.println((int)num+"是整數");
		input.close();
	}
}