1

我们的教授。不久前给了我们这个伪代码......我很难处理这部分

伪代码

并且数组索引值为 14,有 14 个字符串名称

Shell_Sort(Arr,N)

{ 如果(N=1) 那么

{

出口

}

将间隔设置为 N

而(间隔不是1)

{

将间隔设置为 ((Interval/3)+1) If(Interval is not a integer) then <--------- 这是我遇到问题的部分

{

截断间隔 <------------ 在这里我如何将间隔截断为整数?

}

将开始设置为 1

而(开始<=间隔)

{

种类()

增量开始

}

}

}

种类()

{

将 Unsrt_Indx 设置为(开始 + 间隔)

而(unsrt_Indx <= N)

{

如果 (Arr[Unsrt_Indx - 间隔] > arr[unsrt_Indx] 那么

{

将 str_indx 设置为 unsrt_indx

将温度设置为 arr[srt_indx]

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

{

将 arr[set_indx] 设置为 arr[str_index-interval]

将 str_indx 设置为 (crt_index - 间隔)

}

将 arr[str_indx] 设置为 temp

}

将 unsrt_indx 设置为 (unsrt_indx + 间隔)

}

}

我如何使用 if 语句来确定它是否不是整数?

以及如何使用截断?将其截断成两三个。

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()对字符串执行 an。如果 parseInt() 成功,那么你正在处理一个 int。否则,您可以捕获 NumberFormatException。在这种情况下,转换不成功,您没有处理 int。

你会想看Math.floor()看做截断。

于 2013-03-05T10:54:27.703 回答
0

尝试十进制格式。

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

检查一个整数

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 回答
0

利用

java.lang.Math.round(double);
于 2013-03-05T10:53:37.993 回答