我一直在研究这段代码大约一周;我正在尝试创建一个生成随机数的程序,然后使用Bubble方法对它们进行排序,但我收到此消息“冒泡排序:[I @ ad3ba4”。有没有人看到有什么问题我觉得这很简单,但我找不到问题。
import java.util.Random;
public class sortLibrary {
private static void bubbleSort(int[] list) {
int n = list.length;
int temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - 1); j++) {
if (list[j - 1] > list[j - 1]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
System.out.println("\nBubble Sort: " + list);
}
public static void main(String args[]) {
System.out.println("Unsorted list:");
Random numbers = new Random();
int list[] = new int[20];
for (int i = 0; i < 20; i++) {
list[i] = numbers.nextInt(100);
}
for (int i = 0; i < 20; i++) {
System.out.print(list[i] + " ");
}
bubbleSort(list);
}
}
答案 0 :(得分:3)
您不能简单地打印带有println()
的列表。这只适用于字符串。
相反,将list
中的println()
替换为Arrays.toString(list)
,将数组转换为字符串进行打印。
或者,您可以将其打印为数组,类似于@KyleGowen的回答。这是在Java中迭代数组的另一种形式:
String arrayToString = "";
for(int item : list) {
arrayToString += item + ", ";
}
System.out.println("Bubble sort: [" + arrayToString.substring(0, arrayToString.length()-2) + "]");
这也应该很好地打印出来。
在TutorialPoint's online Java compiler处查看这两项内容。
答案 1 :(得分:1)
现在,您不能像这样在java中打印Array。如果要打印所有数组,则需要使用索引或使用以下内容:
System.out.println("\nBubble Sort: " + Arrays.toString(list));
同样在你的if语句中,你有list[j - 1] > list[j-1]
。我认为会有list[j - 1] > list[j]
。所以你的代码看起来像:
import java.util.Arrays;
import java.util.Random;
public class bubble {
private static void bubbleSort(int[] list) {
int n = list.length;
int temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - 1); j++) {
if (list[j - 1] > list[j]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
System.out.println("\nBubble Sort: " + Arrays.toString(list));
}
public static void main(String args[]) {
System.out.println("Unsorted list:");
Random numbers = new Random();
int list[] = new int[20];
for (int i = 0; i < 20; i++) {
list[i] = numbers.nextInt(100);
}
for (int i = 0; i < 20; i++) {
System.out.print(list[i] + " ");
}
bubbleSort(list);
}
}
答案 2 :(得分:0)
您实际上是用
打印出列表的内存地址string s = "b\0OU0IDBGR9247884874<<<<<<<<<<<<<<<|8601130M1709193BGR8601138634<3|IVANOV<";
s = string.Join("", Regex.Split(s, "(ID|I<|P<|V<|VI)").Skip(1));
您很可能想要遍历列表并打印出值。类似的东西:
System.out.println("\nBubble Sort: "+list);
我希望这会有所帮助。