我真的不喜欢问这些问题,这可能是重复的,但我真的很困惑,因为我是java的新手(不是一般的编程)我不能搞清楚。
问题如下:数组names
应该排序,我想出了以下代码:
String[] temp_names = names;
for (int i = 0; i < names.length; i++)
{
for (int j = 0; j < names.length; j++)
{
String biggest = ""+(0);
int biggest_index = 0;
for (int chr = 0; chr < ((biggest.length() < temp_names[j].length()) ? biggest.length() : temp_names[j].length()); chr++)
{
if (biggest.toCharArray()[chr] > temp_names[j].toCharArray()[chr])
{
break;
}
else if (biggest.toCharArray()[chr] < temp_names[j].toCharArray()[chr])
{
biggest = temp_names[j];
biggest_index = j;
break;
}
}
names[i] = biggest;
temp_names[biggest_index] = ""+(255);
}
}
问题发生在最后一行。我将值设置为尽可能高,因此在排序时它基本上被忽略(它总是最后一次)。问题是,当temp_names[biggest_index]
设置为&#39; 255&#39;时,biggest
也会设置为255,而names[i]
又会将names[i] = new String(biggest)
设置为255.这样我就会得到一个数组满是空名。
我知道这与java copys变量作为参考而不是作为值有关,但是当我尝试使用 https://www.website.com/product-brand-name-p254.html
复制/克隆它时,它仍然具有相同的结果。我尝试了很多不同的事情,现在我的想法已经用完了,所以我希望这里有人可以提供帮助。
提前感谢您的回答, 害
- 编辑: 这是学校的练习,所以我不能只使用标准的java函数。
答案 0 :(得分:0)
class SOCLass {
public static void main(String[] args){
String[] names = new String[] {"joe", "bill"};
String[] temp_names = names;// new String[names.length];
//System.arraycopy(names, 0, temp_names, 0, 2);
for (int i = 0; i < names.length; i++)
{
for (int j = 0; j < names.length; j++)
{
String biggest = ""+(0);
int biggest_index = 0;
for (int chr = 0; chr < ((biggest.length() < temp_names[j].length()) ? biggest.length() : temp_names[j].length()); chr++)
{
if (biggest.toCharArray()[chr] > temp_names[j].toCharArray()[chr])
{
break;
}
else if (biggest.toCharArray()[chr] < temp_names[j].toCharArray()[chr])
{
biggest = temp_names[j];
biggest_index = j;
break;
}
}
names[i] = biggest;
temp_names[biggest_index] = ""+(255);
}
}
for(String s : names)
System.out.println(s);
for(String s : temp_names)
System.out.println(s);
}
}
这是您编写的代码。它在两者上打印出255。在新的String [...]和System.arraycopy(...)中注释,它打印最长/最大的帐单。
通过不分配新数组,temp_names和名称是相同的。一个变化反映在另一个