class StringTest 
{
public static void main(String[] args) 
{
String[] str={"nba","abc","cba","zz","qq","haha"};
for (int x=0;x<str.length-1;x++)
{ for (int y=x+1;y<arr.length;y++)
{
if (str[x].compareTo(str[y])>0)
{
change(str,x,y);
}
System.out.print(str[x]+",");
}
}
public static void change(String arr,int x,int y)
{
String temp=str[x];
str[x]=str[y];
str[y]=temp; }
}
}
编译通不过,请问各位大佬错在哪里?

解决方案 »

  1.   

    arr.length()  arr undefine?
      

  2.   

    for (int y=x+1;y<arr.length;y++)-->for (int y=x+1;y<str.length;y++)
      

  3.   

    方法的参数string数组 少些了括号
      

  4.   

    错的太多了
    public class Test {
    public static void main(String[] args) {
    String[] str = { "nba", "abc", "cba", "zz", "qq", "haha" };
    for (int x = 0; x < str.length - 1; x++) { // for (int y=x+1;y<arr.length;y++)
    for (int y = x + 1; y < str.length; y++) {
    if (str[x].compareTo(str[y]) > 0) {
    change(str, x, y);  //change 方法第一个参数是String数组,不是String
    }
    System.out.print(str[x] + ",");
    }
    }
    }
            //change方法定义在main方法外面
    public static void change(String[] str, int x, int y)  //变量名str和方法里面保持一致
    // public static void change(String[] arr, int x, int y) 
    {
    String temp = str[x];
    str[x] = str[y];
    str[y] = temp; }
    // }
    }
      

  5.   

    并且change方法放在main方法外
      

  6.   

    change方法中的str改为arr
      

  7.   

    class StringTest {
    public static void main(String[] args) 
    {
    String[] str={"nba","abc","cba","zz","qq","haha"};
    for (int x=0;x<str.length-1;x++)
    {for (int y=x+1;y<str.length;y++)
    {
    if (str[x].compareTo(str[y])>0)
    {
    change(str,x,y);
    }
    System.out.print(str[x]+",");
    }
    }
    }
    public static void change(String[] str,int x,int y)
    {
    String temp = str[x];
    str[x] = str[y];
    str[y] = temp;

    }
    }
      

  8.   

    你没定义arr数组   改成这个for (int y=x+1;y<str.length;y++)
      

  9.   

     class test8
    {
    private static String[] str;
    public static void main(String[] args) 
    {
    str = new String[] {"nba","abc","cba","zz","qq","haha"};
    for (int x=0;x<str.length-1;x++)
    {for (int y=x+1;y<str.length;y++)
    {
    if (str[x].compareTo(str[y])>0)
    {
       change(str,x,y);
    }}
    System.out.print(str[x]+",");}}
    public static  void change(String [] arr,int x,int y)
    {
    String temp=str[x];
    str[x]=str[y];
    str[y]=temp;}
    }
    说实话,你运行时,你的开发软件没报错吗
      

  10.   

    public class Test1 {
        /*1.静态方法放在main方法外面
        * 2.change方法里面String 类型参数要换成String[]的类型,要跟main方法里面传的值对应
        * 3.change方法里面arr换成str,调用参数名要一致
        * 4.for循环里面的arr.length要换成str.length,你上面定义的数组名是str,下面为啥写arr
        * 细心点吧全是错误,一看就是没认真,估计这段代码你也是粘贴的,然后名字都没改
        */
        public static void main(String[] args) {
            String[] str = {"nba", "abc", "cba", "zz", "qq", "haha"};
            for (int x = 0; x < str.length - 1; x++) {            for (int y = x + 1; y < str.length; y++) {
                    if (str[x].compareTo(str[y]) > 0) {
                        change(str, x, y);
                    }
                    System.out.print(str[x] + ",");
                }
            }
        }    public static void change(String[] str, int x, int y) {
            String temp = str[x];
            str[x] = str[y];
            str[y] = temp;
        }
    }
      

  11.   

    str[x]>str[y]>0  能判断出什么呢  各位大神
      

  12.   

    class StringTest
    {
        public static void main(String[] args) {
            String[] str = {"nba", "abc", "cba", "zz", "qq", "haha"};
            for (int x = 0; x < str.length - 1; x++) {
                for (int y = x + 1; y < str.length; y++) {
                    if (str[x].compareTo(str[y]) > 0) {
                        change(str, x, y);
                    }
                    System.out.print(str[x] + ",");
                }
            }
        }
        public static void change(String[] str,int x,int y)
        {
            String temp=str[x];
            str[x]=str[y];
            str[y]=temp;    }
    }
      

  13.   

    ECLIPSE编译都过不了吧
      

  14.   

    public static void main(String[] args) {
    String[] str = { "nba", "abc", "cba", "zz", "qq", "haha" };
    for (int x = 0; x < str.length - 1; x++) {
    for (int y = x + 1; y < str.length; y++) {
    if (str[x].compareTo(str[y]) > 0) {
    change(str, x, y);
    }
    }
    }
    for (String string : str) {
    System.out.print(string+",");
    }
    } public static void change(String[] str, int x, int y) {
    String temp = str[x];
    str[x] = str[y];
    str[y] = temp; }
      

  15.   

    .change方法里面String 类型参数要换成String[]的类型,第二个for循环里面的arr咋来的,要改成str吧
      

  16.   

    String[] str={"nba","abc","cba","zz","qq","haha"};
    这不是应该对str操作吗,所以你将for 语句中的arr.length改为str.length就可以了。