java中如何判斷一個數是否為正整數(多種種方式比較有意思)對時間處理也可以
阿新 • • 發佈:2019-01-10
這是在貼吧看到的一個小問題.當時回了一個.後來又引來很多朋友的討論.感覺有點啟發.所以寫出來分享一下
其中思路回來倒了兩次
public class ddd { public static void main(String[] args) { double tmp, number; Scanner one = new Scanner(System.in); System.out.print("請輸入一個正整數:"); number = one.nextDouble(); // System.out.println(number);number = 9.1 tmp = number * 2; // System.out.println(tmp); tmp 18.2 // System.out.println((int)tmp);18 // 判斷這個數是不是正整數 while (number <= 0 || tmp % 2 != 0)// 如何將9.0也當成一個正整數????????????? { System.out.print("您輸入的數字不是正整數,請重新輸入:"); number = one.nextDouble(); } /*if (number == 2 || number == 3) { System.out.println((int) number + "是一個素數!"); }*/ } }
我開始認為強轉一下即可,後來發現如果強轉以後用會出問題(如取值範圍和包裝類之間自動取捨等),
所以想到了用String轉換,String的強大可以做很多事.但也增加了程式碼量.可以使用簡化版:
還加上string正則表示式,format方法 就比較簡單了.不僅對整數,對時間等都可以解決一定問題.如下:
Data data = new Data();
String str=String.fromat("%te",date);
這種判斷很強大的.不是嗎?"%d" 就是判斷是否整數 String aa= "432.34";
int a =34;
String str=String.format("%b",aa);
System.out.println(str); //true
System.out.println("%d",a/2);
double a =34.33;
String a2=String.format("%e",a/2);
System.out.println(a2);//轉為十進位制
System.out.println(String.format("%s", a2));//轉為字串
要記的就是%+e,a,d這些.有興趣可以多試一下.
會常遇到:java.util.IllegalFormatConversionException
後來又有人寫了下面強的.這個真不錯.我當時沒想到.
if(x - (int)x < 0.0000001) //精度自己設定
整數
else
非整數
有興趣的朋友可以來說說.