这是我第一次发帖到这个博客。我是Java的新手,当用户输入一组值时,我遇到使用冒泡排序的问题。以下是我的代码;然而,我更多地寻求建议然后回答,因为我不会用答案来学习语言。
感谢您的帮助,如果我的代码有点复杂,请再次抱歉。顺便说一句,我刚开始学习Java,所以我不能遵循非常复杂的编码建议。
import java.util.Arrays;
public class bubbleSort{
public static void main(String[] arg){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("Enter total amount of numbers:" );
int n = input.nextInt();
int [] numbers = new int[n];
System.out.println("Enter the numbers: ");
for (int i = 0; i < n; i++) {
numbers[i] = input.nextInt();
}
System.out.println(list(n));
bubbleSort(n);
System.out.println(list(n));
}
public static void bubbleSort(int[] n){
boolean flag;
do{
flag = false;
for(int i = 0; i < n.length - 1; i++){
if (n[i] > n[i + 1]){
int temp = n[i];
n[i] = n[i + 1];
n[i + 1] = temp;
flag = true;
}
}
} while (flag);
}
}
答案 0 :(得分:0)
当您开始引用未定义的标识符list
时,您的代码有点困惑。
我认为你需要:
System.out.println(Arrays.toString(numbers));
bubbleSort(numbers);
System.out.println(Arrays.toString(numbers));
而不是:
System.out.println(list(n));
bubbleSort(n);
System.out.println(list(n));
n
是输入数字的数量,而不是您想要排序的数字。 numbers
包含输入数据,并且排序更合理。
答案 1 :(得分:0)
您的代码存在问题。
System.out.println(list(n));//list(n)came out of nowhere
你的代码似乎只是整理了一个数组元素。
你可以试试这个:
public class BubbleSort {
public static void main(String[] args){
int[] myArray = new int[10];
for(int i = 0; i < myArray.length; i++){
myArray[i] = (int)(Math.random()* 100 + 1);
System.out.print(myArray[i] + " ");
}
System.out.println();
bubbleSort(myArray);
}
public static void bubbleSort(int[] array){
for(int i = 0; i < array.length - 1; i++){
for(int j = 0; j < array.length -1 - i; j++){
if(array[j] > array[j+1]){
int temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
}
答案 2 :(得分:-2)
所以,让我们提供一些关于你的代码的更多信息。
bubbleSort
应为BubbleSort
int[] n
(bubbleSort(int[] n)
)的方法,则意味着您只传递给它int的数组list(n)
,至少在你的班级上)这些是您提供的代码的好建议。希望它能帮助您更好地了解Java世界。