gpt4 book ai didi

java - 日期寄存器排序算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:21 25 4
gpt4 key购买 nike

我创建了一个用作生日登记册的程序,您可以在其中将日期(姓名、日期)输入到 ArrayList 中,然后我可以在对话框窗口中打印出来。但是,我想按日期编号对它们进行排序,然后打印出来。我试过这个,但我卡住了,希望得到一些支持。

这是我到目前为止编写的代码,但它不起作用。我在网上找到了该算法的伪代码。

public String sortDate(){ // 

StringBuilder sb = new StringBuilder();
boolean[]help = new boolean[reg.size()];

for(int i = 0; i<reg.size()-1;i++){
int min= Integer.MAX_VALUE;
int minIndex = -1;
for(int k = i; k<reg.size()-1; k++){
if(help[k]=false && Integer.parseInt(reg.get(k).getDate())< min){
minIndex = k;
min = reg.get(k).getDateInt();

}


}

sb.append(reg.get(minIndex).getDate()+"\n");
help[minIndex] = true;
}
return sb.toString();
}

我最终得到了错误的输出。我得到数组中第一个日期的值乘以数组的大小。比方说,如果我的数组中有 3 个日期并且第一个值是 (890105) 那么输出会给我:

890105
890105
890105

我找到的伪代码是:

create something that stores the search result (ex. StringBuilder object)
create a boolean array (where all elements are false by start)
for i = 0 to size-1:
m = big value
for k = 0 to size-1:
if help[k] is false and the value on spot k < min:
index = k;
m = value on spot k;
add m at the end of the search result
help[index] = true;

感谢我能得到的任何帮助

最佳答案

这是一个错误:

if(help[k]=false && ...

您在这里分配falsehelp[k]if (.. .) 的计算结果为 false。所以,if 的主体没有被执行,min 停留在 Integer.MAX_VALUE 然后你做 reg.get(min ),导致您看到的异常。

你的意思是:

// Note: == instead of =
if (help[k] == false && ...

或更好:

if (!help[k] && ...

关于java - 日期寄存器排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com