求高手帮我找下JAVA的错误在哪里

wangruicai 2009-08-02 10:43:23
我这个代码是写冒泡法和选择法 然后随即输入数进行进行排列 结果没显示错误 只显示了一对字母 是什么意思呀
class maopaoArrange{
public void maopao(int[] arr){
int i,j,temp;
for(i=0;i<arr.length-1;i++)
{
for(j=0;j<arr.length-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=0;i<arr.length;i++)
{
System.out.print("冒泡排序后的数据");
System.out.print(" "+arr[i]);
}
}

}
class MixArrange{
public void Mix(int[] arr){
for(int i=0;i<10;i++)
{
int temp=0;
int k=i;
for(int j=1+i;j<10;j++)
{
if(arr[j]<arr[k])
{
temp=arr[j];
arr[j]=arr[k];
arr[k]=temp;
}
}
}
for(int i=0;i<arr.length;i++)
{
System.out.print("选择排序后的数据");
System.out.print(" "+arr[i]);
}

}
}
public class ArrayArrange{
public static void main(String[] args){
maopaoArrange mc1=new maopaoArrange();
MixArrange mc2=new MixArrange();
int[] arr=new int[10];
for(int i=0;i<10;i++)
{
arr[i]=(int)(Math.random()*30);
}
mc1.maopao(arr);
mc2.Mix(arr);

}
}
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
死牛胖子 2009-08-03
  • 打赏
  • 举报
回复
学习
ITwinter 2009-08-03
  • 打赏
  • 举报
回复
楼上的兄弟非常感谢你的详解
bigbug9002 2009-08-02
  • 打赏
  • 举报
回复
class maopaoArrange{ 
public void maopao(int[] arr){
int i,j,temp;
for(i=0;i <arr.length-1;i++) {
for(j=0;j <arr.length-i-1;j++) { //你原来的是:for(j=0;j <arr.length-i;j++)
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.print("冒泡排序后的数据"); //这句从下面的for循环中移出来
for(i=0;i <arr.length;i++){
System.out.print(" "+arr[i]);
}
System.out.println(); //我加的。
}
}

class MixArrange{
public void Mix(int[] arr){
for(int i=0;i <arr.length;i++){ //你原来是for(int i=0;i <10;i++) 你用10不对,如果arr这个数组不是10的长度,就有问题了。
int temp=0;
//你用k记录最小元素的下标,这样在下面的for循环中就不用每次交换元素了。只在循环结束交换一次就可以了。
int k=i;
for(int j=1+i;j <arr.length;j++){ //你原来是:for(int j=1+i;j <10;j++)
if(arr[j] <arr[k]) {
k=j;
}
}
temp=arr[k];
arr[k]=arr[i];
arr[i]=temp;
}
System.out.print("选择排序后的数据"); //这句多下面的for循环中移出来。
for(int i=0;i <arr.length;i++){
System.out.print(" "+arr[i]);
}
System.out.println(); //我加的
}
}

public class ArrayArrange{
public static void main(String[] args){
maopaoArrange mc1=new maopaoArrange();
MixArrange mc2=new MixArrange();
int[] arr=new int[10];
for(int i=0;i <arr.length;i++){ //for(int i=0;i <10;i++)
arr[i]=(int)(Math.random()*30);
System.out.print(" "+arr[i]); //我加的。把数组的原始状态打印出来,以便比较。
}
System.out.println(); //我给你加的
mc1.maopao(arr);
mc2.Mix(arr);
}
}
doingendlessly 2009-08-02
  • 打赏
  • 举报
回复
第二个循环范围应该是:j<arr.length-i-1
hyhymn 2009-08-02
  • 打赏
  • 举报
回复
mark
ojwftded 2009-08-02
  • 打赏
  • 举报
回复
这还不显示错误,除非楼主贴错了,冒泡的嵌套循环for(j=0;j <arr.length-i-1;j++)应该是这样的,否则if(arr[j]>arr[j+1])这个语句会抄范围。另外楼主我帮你改改代码啊,结果更好看点
System.out.print("冒泡排序后的数据\n");
for (i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i]);
}
System.out.println("\n");
把冒泡的输出改成这个样子
System.out.print("选择排序后的数据\n");
for (int i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i]);
}
System.out.println("\n");
把选择排序的改成这个样子
另外注意maopaoArrange这个类名首字母大写。。。
sangshusen_1988 2009-08-02
  • 打赏
  • 举报
回复
for(j=0;j <arr.length-i;j++)
红色部分改成1

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧