1

私たちの教授。少し前にこの擬似コードを提供してくれました...そして、私はこの部分で苦労しています

疑似コード

配列インデックス値は 14 で、14 個の文字列名があります

Shell_Sort(Arr,N)

{ If(N=1) then

{

出口

}

間隔を N に設定

while(間隔が1でない)

{

間隔を ((間隔/3)+1) に設定します。(間隔は整数ではありません) の場合 <--------- これが私が問題を抱えている部分です

{

間隔を切り捨てる<------------そしてここで、間隔を整数に切り捨てるにはどうすればよいですか?

}

開始を 1 に設定

while(開始 <= 間隔)

{

選別()

増分開始

}

}

}

選別()

{

Unsrt_Indx を (開始 + 間隔) に設定します。

while(unsrt_Indx <= N)

{

if (Arr[Unsrt_Indx - 間隔] > arr[unsrt_Indx] then

{

str_indx を unsrt_indx に設定します

temp を arr[srt_indx] に設定

while((str_indx >start && (arr[str_indx-Interval] > temp))

{

arr[set_indx] を arr[str_index-interval] に設定

str_indx を (crt_index - interval) に設定します

}

arr[str_indx] を temp に設定します

}

unsrt_indx を (unsrt_indx + interval) に設定します

}

}

整数でないかどうかを判断する際に if ステートメントを使用するにはどうすればよいですか??

そして、切り捨てをどのように使用しますか?? 1 2 または 3 に切り捨てます。

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

そんな感じ。

4

5 に答える 5

1

数値を扱っていることがわかっている場合は、次のことができます。

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

それ以外の場合、数値が文字列の場合は、文字列に対して実行する try/catch ステートメントを使用できますInteger.parseInt()。parseInt() が成功した場合、int を扱っています。それ以外の場合は、NumberFormatException をキャッチできます。その場合、変換は成功せず、int を扱っていません。

Math.floor()切り捨てを行うには、を参照してください。

于 2013-03-05T10:54:27.703 に答える
0

DecimalFormat を試してください。

DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(4.6666666666667);
于 2013-03-05T10:51:12.037 に答える
0

私はあなたの教授が意味すると思いますMath.floor(interval)

于 2013-03-05T10:51:15.997 に答える
0

使用する

java.lang.Math.round(double);
于 2013-03-05T10:53:37.993 に答える
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を使用します。

整数(整数)にしたい場合

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
  }
}
于 2013-03-05T10:53:00.490 に答える