import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
This program extracts all integer values from a mixed string
and sorts them using the standard library's sorting utilities.
It demonstrates:
- clear separation of concerns using methods
- straightforward character parsing
- dynamic storage using ArrayList<Integer>
- efficient sorting with Collections.sort
*/
public class ExtractAndSortNumbers {
// ------------------------------------------------------------
// Extract all integer values from a mixed string.
// The method walks through each character, collects digits,
// and converts completed digit sequences into integers.
// ------------------------------------------------------------
public static List<Integer> extractNumbers(String input) {
List<Integer> numbers = new ArrayList<>();
StringBuilder buffer = new StringBuilder();
for (char ch : input.toCharArray()) {
if (Character.isDigit(ch)) {
// accumulate digits
buffer.append(ch);
} else {
// flush buffer if it contains a number
if (buffer.length() > 0) {
numbers.add(Integer.parseInt(buffer.toString()));
buffer.setLength(0);
}
}
}
// flush trailing number
if (buffer.length() > 0) {
numbers.add(Integer.parseInt(buffer.toString()));
}
return numbers;
}
// ------------------------------------------------------------
// Print all numbers in a space‑separated format.
// ------------------------------------------------------------
public static void printNumbers(List<Integer> numbers) {
for (int i = 0; i < numbers.size(); i++) {
System.out.print(numbers.get(i));
if (i < numbers.size() - 1) {
System.out.print(" ");
}
}
System.out.println();
}
// ------------------------------------------------------------
// Main
// ------------------------------------------------------------
public static void main(String[] args) {
String input = "1000withz7 and3 or 99 give42";
// extract numbers
List<Integer> numbers = extractNumbers(input);
// sort numbers
Collections.sort(numbers);
// display result
System.out.print("Sorted numbers: ");
printNumbers(numbers);
}
}
/*
run:
Sorted numbers: 3 7 42 99 1000
*/