1. 程式人生 > >java中如何判斷一個數是否為正整數(多種種方式比較有意思)對時間處理也可以

java中如何判斷一個數是否為正整數(多種種方式比較有意思)對時間處理也可以

  這是在貼吧看到的一個小問題.當時回了一個.後來又引來很多朋友的討論.感覺有點啟發.所以寫出來分享一下

其中思路回來倒了兩次

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
非整數

有興趣的朋友可以來說說.