public class Example{
public static void main(String args[]){
int a[]={3,4,1,2,-6};
for(int i=0;i<=a.length;i++) {
for(int j=i+1;j<=a.length;j++){
if(a[j]<a[i]){
int n=a[j];a[j]=a[i];a[i]=n;
}
}
}
System.out.printf("%d/n%d/n%d/n%d/n%d/n",a[0],a[1],a[2],a[3],a[4]);
}
}
public static void main(String args[]){
int a[]={3,4,1,2,-6};
for(int i=0;i<=a.length;i++) {
for(int j=i+1;j<=a.length;j++){
if(a[j]<a[i]){
int n=a[j];a[j]=a[i];a[i]=n;
}
}
}
System.out.printf("%d/n%d/n%d/n%d/n%d/n",a[0],a[1],a[2],a[3],a[4]);
}
}
at Example.main(Example.java:6)
Java Result: 1
大家帮我这个菜鸟看看好么?谢谢咯
for(int j=i+1;j<a.length-1;j++){
if(a[j]<a[i]){
int n=a[j];a[j]=a[i];a[i]=n;
}
}冒泡不能下标越界;没几个值,lz自己在脑子运行也是越界啊
for(int j=i+1;j<a.length;j++){
public static void main(String args[]) {
int a[] = { 3, 4, 1, 2, -6 };
for (int i = 0; i <= a.length-1; i++) {
for (int j = i + 1; j <= a.length-1; j++) {
if (a[j] < a[i]) {
int n = a[j];
a[j] = a[i];
a[i] = n;
}
}
System.out.print(a[i]+"/");
}
}
}
你的
for (int i = 0; i <= a.length-1; i++)内,“i <= a.length-1"需要-1,因为数组下标是从0开始的。
public static void main(String args[]){
int a[]={3,4,1,2,-6};
for(int i=0;i<a.length;i++) {
for(int j=i+1;j<a.length;j++){
if(a[j]<a[i]){
int n=a[j];a[j]=a[i];a[i]=n;
}
}
}
System.out.printf("%d/n%d/n%d/n%d/n%d/n",a[0],a[1],a[2],a[3],a[4]);
}
}