伪代码
,数组索引值为14,包含14个字符串名称
Shell_Sort(ARR,N)
{ 如果(N = 1)那么
{
退出
}
将间隔设置为N
while(Interval不是1)
{
将间隔设置为((间隔/ 3)+1) 如果(Interval不是一个整数)那么< ---------这里是我遇到问题的部分
{
截断间隔< ------------并且在这里如何将间隔截断为整数?
}
将开始设为1
while(start< = Interval)
{
排序()
增量开始
}
}
}
排序()
{
将Unsrt_Indx设置为(start + interval)
while(unsrt_Indx< = N)
{
if(Arr [Unsrt_Indx - Interval]> 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语句是否不是整数?
我如何使用截断? 将其截断为两三分之一。
ex.
4.6666666666667
how can i truncate it into
4.67
4.6
4
类似的东西。
答案 0 :(得分:1)
如果你知道你正在处理一个号码,你可以这样做:
if(x == (int)x) {
//x is an int (ie: a whole number)
}
否则,如果您的数字是String,则可以使用try / catch语句在其中对String执行Integer.parseInt()
。如果parseInt()成功,那么你正在处理一个int。否则,您可以捕获NumberFormatException。在这种情况下,转换不成功,你没有处理int。
您需要查看Math.floor()
进行截断。
答案 1 :(得分:0)
尝试使用DecimalFormat。
DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(4.6666666666667);
答案 2 :(得分:0)
我认为你的教授意味着Math.floor(interval)
答案 3 :(得分: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
}
}
答案 4 :(得分:0)
使用
java.lang.Math.round(double);