2013-03-05 70 views
1

我們的教授。給了我們這個僞代碼前一陣子...和我在與這部分很難截斷爲整數...並且如果語句確定它是否不是整數

和數組索引值是14,14字符串名稱

Shell_Sort(編曲,N )

{ 如果(N = 1),然後

{

退出

}

設置間隔爲N

而(時間間隔不爲1)

{

設置間隔,以((間隔/ 3)+1) 如果(時間間隔不整數)然後< ---------這是我遇到麻煩的部分

{

截斷間隔< ------------在這裏,我怎樣才能截斷間隔成一個整數?

}

集開始1個

而(開始< =間隔)

{

排序()

增量開始

}

}

}

排序()

{

集Unsrt_Indx至(啓動+間隔)

而(unsrt_Indx < = N)

{

如果(ARR [Unsrt_Indx - 間隔]> ARR [unsrt_Indx]然後

{

組str_indx到unsrt_indx

設置溫度給Arr [srt_indx]

而((str_indx>啓動& &(ARR [str_indx-間隔]>溫))

{

組ARR [組_indx]給Arr [str_index-間隔]

集str_indx至(crt_index - 間隔)

}

組ARR [str_indx]到臨時

}

設置unsrt_indx至( unsrt_indx + interval)

}

}

我該如何使用if語句來確定它是否不是整數?

以及如何使用截斷? 將它截斷成兩個或三個。

ex. 
4.6666666666667 
how can i truncate it into 
4.67 
4.6 
4 

這樣的事情。

+0

看起來像這就是你需要的:http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java – 2013-03-05 10:54:09

回答

0

嘗試DecimalFormat。

DecimalFormat df = new DecimalFormat("0.##"); 
String result = df.format(4.6666666666667); 
0

我覺得你的教授表示Math.floor(interval)

+0

沒有教我們那麼...... Math.floor(間隔)做什麼? – 2013-03-05 11:03:07

+0

它下降http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#floor%28double%29 – Zutty 2013-03-05 11:18:37

0

檢查了整整一個數量

if(Math.floor(interval) == interval) 
{ 
    //interval is a whole number 
} 

和圍捕:

import java.math.RoundingMode; 
import java.text.DecimalFormat; 

public class Main 
{ 
    final public static void main(String[] args) 
    { 
    double i = 4.6666666666667; 
    DecimalFormat format = new DecimalFormat("#.#"); 
    format.setRoundingMode(RoundingMode.FLOOR); // * 
    String s = format.format(i); 
    i = Double.parseDouble(s); 
    System.out.println(i); //should be 4.6 
    } 
} 

*代替RoundingMode.FLOOR使用合適的RoundingMode適合你的n EED。

的情況下,如果你想使它到一個整數(整數)

import java.math.RoundingMode; 
import java.text.DecimalFormat; 

public class Main 
{ 
    final public static void main(String[] args) 
    { 
    double i = 4.6666667; 
    DecimalFormat format = new DecimalFormat("#"); 
    format.setRoundingMode(RoundingMode.FLOOR); // * 
    String s = format.format(i); 
    int j = Integer.parseInt(s);; 
    System.out.println(j);// should be 4 
    } 
} 
+0

我編輯了我的答案,包括代碼給你以上的問題。查看! – codeMan 2013-03-05 11:27:59

+0

好的..然後..在這裏聊天,但確保我們完成後刪除所有聊天! – codeMan 2013-03-05 11:34:26

+0

先生...你有沒有檢查我之前編輯過的僞碼?在頂部 – 2013-03-05 11:35:52

0

使用

java.lang.Math.round(double); 
1

如果你知道你正在處理一個數字,你可以這樣做:

if(x == (int)x) { 
    //x is an int (ie: a whole number) 
} 

否則,如果您的號碼是字符串,您可以使用try/catch語句,在該語句中您執行第Integer.parseInt() e字符串。如果parseInt()成功,那麼你正在處理一個int。否則,你可以捕獲一個NumberFormatException。在這種情況下,轉換不成功,你不處理int。

你會想看看Math.floor()做截斷。