判斷輸入的內容是整數、小數、還是非整非小數
阿新 • • 發佈:2018-12-10
要求:使用者從控制檯接收一個字串,通過程式判斷該字串是整數,還是小數。如果既不是整數也不是小數,程式輸出“數字格式不正確”。
要點:
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(); } }