无法对从用户输入的字符串数组进行排序

时间:2014-06-17 03:20:04

标签: java

我正在尝试从用户那里获取字符串数组,然后尝试按字母顺序对其进行排序。但是在给出下面给出的行输出后它没有响应: -

System.out.println(" Array is" + Arrays.toString(Arr));

以下是用于此的代码: -

package practice1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class RemDup {

    public static void main(String[] args) {
        try{
        //Obtaining array from user and sorting it
        List<String> list=new ArrayList<>();
        Scanner in=new Scanner(System.in);
        do {
            System.out.println("Current list is"+list);
            System.out.println("Add more(y/n)");
            if (in.next().startsWith("y")) {
                System.out.println("Enter:");
                list.add(in.next());
            }else{break;

            }
        } while (true);
        System.out.println("List is "+list);
        String[] Arr=list.toArray(new String[0]);
        System.out.println("Array is"+Arrays.toString(Arr));
        String str=Arr.toString();
        String[] strArr=str.split(" ");
        for(int i=0;i<Arr.length;i++)
        {
            for (int j = i+1; j < Arr.length; j++) {
                if (strArr[i].compareTo(strArr[j])>0) {
                    String temp=strArr[i];
                    strArr[i]=strArr[j];
                    strArr[j]=temp;
                }
            }
        }
        for(String ss:strArr){
            System.out.println(ss);
        }
        }
        catch(Exception e){
            e.toString();
        }
    }

}

请帮忙

4 个答案:

答案 0 :(得分:0)

您的代码正在抛出java.lang.ArrayIndexOutOfBoundsException。您可能没有意识到这一点,因为您的捕获块无效。尝试在catch块中打印e。由于异常,您的代码不会在for循环之外执行

答案 1 :(得分:0)

请尝试以下适用于您的代码,

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class RemDup {

    public static void main(String[] args) {
        try {
            // Obtaining array from user and sorting it
            List<String> list = new ArrayList<String>();
            Scanner in = new Scanner(System.in);
            do {
                System.out.println("Current list is" + list);
                System.out.println("Add more(y/n)");
                if (in.next().startsWith("y")) {
                    System.out.println("Enter:");
                    list.add(in.next());
                } else {
                    break;

                }
            } while (true);
            System.out.println("List is " + list);
            String[] Arr = list.toArray(new String[0]);
            System.out.println("Array is" + Arrays.toString(Arr));
            String str = Arr.toString();
            Arrays.sort(Arr);
            System.out.println("Sorted Array is" + Arrays.toString(Arr));           
        } catch (Exception e) {
            e.toString();
        }
    }
}

示例输出: 目前的清单是[]

添加更多(y / n)y

输入命令aaa

当前列表是[aaa]

添加更多(y / n)

ý

输入:

HHH

当前列表是[aaa,hhh]

添加更多(y / n)

ý

输入:

CCC 目前的清单是[aaa,hhh,ccc] 添加更多(y / n) ÿ 输入:

123 目前的清单是[aaa,hhh,ccc,123] 添加更多(y / n)

<磷>氮 列表是[aaa,hhh,ccc,123]

数组是[aaa,hhh,ccc,123]

排序数组是[123,aaa,ccc,hhh]

答案 2 :(得分:0)

问题在于以下几行

    String str=Arr.toString();
    String[] strArr=str.split(" ");

toString不会返回您期望的值。

请按以下步骤替换这两行         String [] strArr = list.toArray(new String [0]);

答案 3 :(得分:0)

您的代码抛出了ArrayIndexOutOfBoundsException。

    String str=Arr.toString();
    String[] strArr=str.split(" ");

这些在您的范围内没有意义

试试这个:

        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.List;
        import java.util.Scanner;

        public class SortTest {

        public static void main(String[] args) {
        try{
        //Obtaining array from user and sorting it
        List<String> list=new ArrayList<String>();
        Scanner in=new Scanner(System.in);
        do {
            System.out.println("Current list is"+list);
            System.out.println("Add more(y/n)");
            if (in.next().startsWith("y")) {
                System.out.println("Enter:");
                list.add(in.next());
            }else{break;

            }
        } while (true);

        System.out.println("List is "+list);
        String[] Arr=list.toArray(new String[list.size()]);
        System.out.println("Array is"+Arrays.toString(Arr));
        String[] strArr=new String[Arr.length];
        for(int i=0;i<Arr.length;i++)
        {
            for (int j = i+1; j < Arr.length; j++) {
                if (Arr[i].trim().compareTo(Arr[j].trim())>0) {
                    String temp=Arr[j];
                    Arr[j]=Arr[i];
                    Arr[i]=temp;
                }
            }
            strArr[i]=Arr[i];
        }
        System.out.println("After sorting : ");
        for(String ss:strArr){
            System.out.print(ss + " ");
        }
     }
    catch(Exception e){
        System.out.println(e);
    }
    }

    }