我正在尝试从用户那里获取字符串数组,然后尝试按字母顺序对其进行排序。但是在给出下面给出的行输出后它没有响应: -
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();
}
}
}
请帮忙
答案 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);
}
}
}