Java 我的第二个System.out.print没有打印,但可以编译
我正在使用这个类作为另一个程序的一部分,我想知道为什么第二个Java 我的第二个System.out.print没有打印,但可以编译,java,system.out,Java,System.out,我正在使用这个类作为另一个程序的一部分,我想知道为什么第二个System.out.print不打印任何东西。我对其他算法也做了同样的处理,效果很好。它仍然在方法中,因此我不确定它为什么不会打印 public class EnhancedBubbleSort { int temp = 0; boolean sorted = false; long counter1 = 0, counter2 = 0; public void sort(int[] numbers)
System.out.print
不打印任何东西。我对其他算法也做了同样的处理,效果很好。它仍然在方法中,因此我不确定它为什么不会打印
public class EnhancedBubbleSort
{
int temp = 0;
boolean sorted = false;
long counter1 = 0, counter2 = 0;
public void sort(int[] numbers)
{
System.out.print("Before Enhanced Bubble Sort: ");
for(int a: numbers)
System.out.print(a + ", ");
int lastSwap = numbers.length-1;
for(int i=1; i<numbers.length; i++)
{
boolean is_sorted = true;
int currentSwap = -1;
for(int j=0; j < lastSwap; j++)
{
counter1++;
if(numbers[j] > numbers[j+1])
{
counter2++;
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
is_sorted = false;
currentSwap = j;
}
}
if(is_sorted)
return;
lastSwap = currentSwap;
}
System.out.print("\nAfter Enhanced Bubble Sort: ");
for(int a: numbers)
System.out.print(a + ", ");
}
}
公共类EnhancedBubbleSort
{
内部温度=0;
布尔排序=假;
长计数器1=0,计数器2=0;
公共无效排序(int[]个数字)
{
System.out.print(“增强气泡排序之前:”);
用于(int a:数字)
系统输出打印(a+“,”);
int lastSwap=numbers.length-1;
对于(整数i=1;i个数[j+1])
{
计数器2++;
温度=数字[j];
数字[j]=数字[j+1];
数字[j+1]=温度;
is_sorted=false;
currentSwap=j;
}
}
如果(已排序)
返回;
lastSwap=currentSwap;
}
System.out.print(“\n增强气泡排序后:”);
用于(int a:数字)
系统输出打印(a+“,”);
}
}
请按以下方式修改代码,它可以正常工作:
class EnhancedBubbleSort
{
int temp = 0;
boolean sorted = false;
long counter1 = 0, counter2 = 0;
public void sort(int[] numbers)
{
System.out.print("Before Enhanced Bubble Sort: ");
for(int a: numbers)
System.out.print(a + ", ");
int lastSwap = numbers.length-1;
for(int i=1; i<numbers.length; i++)
{
boolean is_sorted = true;
int currentSwap = -1;
for(int j=0; j < lastSwap; j++)
{
counter1++;
if(numbers[j] > numbers[j+1])
{
counter2++;
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
is_sorted = false;
currentSwap = j;
}
}
if(is_sorted)
break; // Use break statement instead of return one
lastSwap = currentSwap;
}
System.out.print("\nAfter Enhanced Bubble Sort: ");
for(int a: numbers)
System.out.print(a + ", ");
}
}
当您执行
if(已排序)返回时
您离开void sort()
,将不再执行其他语句。你要做的是if(is_sorted)break
,将留给循环。如果(已排序)返回
你认为这是什么?你有一个返回值
,它应该是一个中断
。我已经修复了它,在if中使用break而不是return(排序)
jshell> new EnhancedBubbleSort().sort(data)
Before Enhanced Bubble Sort: 1, 2, 3, 4,
After Enhanced Bubble Sort: 1, 2, 3, 4,