如标题所示。例如,如果输入是9103ndhai*25ma@#$
,则程序应该输出012359
。这是我的尝试:
public static void main (String args[]) {
Scanner cin = new Scanner (System.in);
String myString = "";
while (cin.hasNext()) {
int tempInt = cin.nextInt();
myString = myString + tempInt;
}
Scanner intScan = new Scanner (myString);
List<Integer> intList = new ArrayList();
while (intScan.hasNext()) {
int tempInt2 = intScan.nextInt();
intList.add(tempInt2);
}
Collections.sort (intList);
for (int i=0; i<intList.size(); i++){
System.out.println(intList.get(i));
}
}
这给出了错误的结果。我试着特别使用Scanner,但我认为我对这个类有一些误解(会更接近api)。有什么建议吗?
我详细阐述了您的代码并尝试使用它:
public static void main (String args[]) {
List<Integer> intList = new ArrayList();
Scanner cin = new Scanner(System.in);
System.out.println("Enter the sequence");//9103ndhai*25ma@#$
String myString = "";
String tempInt = cin.next();
for(int i = 0; i< tempInt.length(); i++){
String s = ""+tempInt.charAt(i);
if(s.matches("[0-9]"))
intList.add(Integer.parseInt(""+tempInt.charAt(i)));
}
Collections.sort (intList);
for (int i=0; i<intList.size(); i++){
System.out.print(intList.get(i));
}
}
这应该能在中工作
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
Pattern p = Pattern.compile("\d"); //Matches single digits (from 0-9) - prepend -? to the regex to react to "negative" digits
Matcher m = p.matcher(input);
List<Integer> integers = new ArrayList<Integer>();
while (m.find()) {
integers.add(Integer.parseInt(m.group()));
}
Collections.sort(integers);
integers.forEach(System.out::print);
}