Java 使用用户';s输入=错误
当我尝试调用我的气泡排序类时,出现了一些错误。但是我找不到它。 这是我的气泡排序类,应该可以:Java 使用用户';s输入=错误,java,bubble-sort,Java,Bubble Sort,当我尝试调用我的气泡排序类时,出现了一些错误。但是我找不到它。 这是我的气泡排序类,应该可以: public static void Sort2(double[] yourNumbers) { double swap; for(int i = 0; i < yourNumbers.length-1; i++){ for(int d = 0; d < yourNumbers.length-1; d++){
public static void Sort2(double[] yourNumbers) {
double swap;
for(int i = 0; i < yourNumbers.length-1; i++){
for(int d = 0; d < yourNumbers.length-1; d++){
if(yourNumbers[d] > yourNumbers[d+1]){
//swap feature
swap = yourNumbers[d];
yourNumbers[d] = yourNumbers[d+1];
yourNumbers[d+1] = swap;
}
}
}
}
我知道有人在这里问了很多次,但我觉得我做得不对。你能帮我吗?
注:我不允许使用ArrayList
编辑:这是我现在使用的代码。仍然不起作用:
编辑2:在这个帮助下,我得到了那个。一条线解决一切
import java.util.Scanner;
public class Bublesort{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Size");
int yourNumbers = scan.nextInt();
double[] array = new double[yourNumbers];
System.out.println("Numbers");
for(int i = 0; i < array.length; i++) {
System.out.println(array[i]);
array[i] = scan.nextDouble();
}
Sort2(array);
**System.out.println(Arrays.toString(array));**
}
public static void Sort2(double[] yourNumbers) {
double swap;
for(int i = 0; i < yourNumbers.length - 1; i++){
for(int d = i + 1; d < yourNumbers.length; d++){
if(yourNumbers[i] > yourNumbers[d]){
//swap feature
swap = yourNumbers[i];
yourNumbers[i] = yourNumbers[d];
yourNumbers[d] = swap;
}
}
}
}}
import java.util.Scanner;
公共类Bublesort{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
系统输出打印项次(“尺寸”);
int yourNumbers=scan.nextInt();
double[]数组=新的double[yourNumber];
系统输出打印项次(“数字”);
for(int i=0;iyourNumbers[d]){
//交换功能
swap=你的号码[i];
yourNumbers[i]=yourNumbers[d];
您的号码[d]=交换;
}
}
}
}}
错误表示不能将int
传递给接受double[]
作为参数的方法
System.out.println("Size");
int yourNumbers = scan.nextInt();
double[] array = new double[yourNumbers];
System.out.println("Numbers");
for(int i = 0; i < array.length; i++) {
System.out.println(array[i]);
array[i] = scan.nextDouble();
}
sort2(array);//**should work fine**
System.out.println(“大小”);
int yourNumbers=scan.nextInt();
double[]数组=新的double[yourNumber];
系统输出打印项次(“数字”);
for(int i=0;i
要使用ArrayList
必须导入java.util.ArrayList代码>由于向Sort2()函数传递一个整数,因此出现错误。您需要向其传递一个双精度数组。另外,sort2函数将对数组进行排序,但您将无法引用它,因为java按值传递参数。。您应该使用函数double[]sort2(double[]array)
,然后返回排序后的数组。排序例程的更好版本应该类似于:N*(N-1)/2次迭代与N^2次迭代
for(int i = 0; i < yourNumbers.length - 1; i++){
for(int d = i + 1; d < yourNumbers.length; d++){
if(yourNumbers[i] > yourNumbers[d]){
//swap feature
swap = yourNumbers[i];
yourNumbers[i] = yourNumbers[d];
yourNumbers[d] = swap;
}
}
}
for(int i=0;iyourNumbers[d]){
//交换功能
swap=你的号码[i];
yourNumbers[i]=yourNumbers[d];
您的号码[d]=交换;
}
}
}
在哪里调用Sort2()
方法?我没有看到从main()
方法调用它。调用Sort2(数组)而不是Sort2(yourNumbers);是的,谢谢,我添加了Sort2方法。你仍然得到编译器错误还是编译失败?不,代码可以工作,但代码所做的不是我想要的。当用户键入不同的双精度数字时,它应该在Buble-alg.Oh的帮助下进行排序,您的意思是不允许使用ArrayList类。。。这对你来说是模棱两可的,我的回答对你来说仍然是一个解决办法。没有必要投否决票……但你在参考部分错了!引用的值已传递,因此更改将影响原始数组!完美的例子:Arrays.sort()是一个void方法…这将打印什么
int[]array={3,2,1}代码>
数组。排序(数组)代码>
用于(int i=0;i
System.out.println(数组[i])代码>
我的观点与arraylistLook无关,因为所有参数都是通过java中的值传递的:正确!对于作为引用数据类型的参数,传递引用的值。因此,参数是对与参数相同的对象的引用。即使这个解也不起作用。错误是怎么说的??你能把你的相关代码贴在你出错的地方吗??
for(int i = 0; i < yourNumbers.length - 1; i++){
for(int d = i + 1; d < yourNumbers.length; d++){
if(yourNumbers[i] > yourNumbers[d]){
//swap feature
swap = yourNumbers[i];
yourNumbers[i] = yourNumbers[d];
yourNumbers[d] = swap;
}
}
}