我第一次在ArrayList上工作,所以希望对理解它有所帮助。
我正在接受用户输入并将其存储在ArrayList中。
输入由一位数字和两位数字组成。
如果单位数字是1(在任何索引处),则Arraylist会正确排序。
如果一位数字不是1,则该数字不是按排序顺序(所有其他数字都已排序)。
请忽略输入的第一行,因为它的目的是另外一回事,并且该逻辑尚待编写。
输入的第二行是要存储在arraylist中并进行排序的数字。
import java.io.*;
import java.util.*;
public class FindTheNo {
public static void main(String[] args) throws Exception {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String line;
String s = br.readLine();
String[] numbers = s.split(" ");
while((line = br.readLine()) != null){
String arr = line;
String[] nos = arr.split(" ");
ArrayList<String> al = new ArrayList<String>();
for(int i = 0; i < nos.length; i++)
al.add(nos[i]);
Collections.sort(al);
for(String s1: al)
System.out.print(s1 +" ");
System.out.println();
// System.out.println(al.get(6));
}
}
}
输入: 1 5 9 10 58 63 47 25 63 9
观察到的输出: 10 25 47 58 63 63 9
预期输出: 9 10 25 47 58 63 63
请告知我要去哪里
答案 0 :(得分:1)
这是因为您正在排序String
,而不是Integer
。由于String
"10"
“小于” "2"
。您需要更改此内容:
ArrayList<String> al = new ArrayList<String>();
for(int i = 0; i < nos.length; i++)
al.add(nos[i]);
进入:
ArrayList<Integer> al = new ArrayList<Integer>();
for(int i = 0; i < nos.length; i++)
al.add(Integer.valueOf(nos[i]));
答案 1 :(得分:0)
您正在尝试对字符串进行排序,而不是对整数进行排序,因此,如果我们将字符串“ 9”和“ 10”排序,则将其排序为10,后跟9。而如果将其排序为整数,则将收到输出为9其次是10