不用 ArrayList<Integer> numbers = new ArrayList<>();
时间: 2024-12-11 13:17:20 浏览: 13
关于stream的总结
如果你不想使用`ArrayList`来存储数字,可以考虑使用`int`类型的数组或者`LinkedList`,它们都是Java中常见的动态数据结构。以下是两种替代方法的示例:
**使用`int`数组**:
```java
public class Main {
public static void main(String[] args) {
int[] numbers = new int[Integer.MAX_VALUE]; // 创建足够大的数组以容纳可能的最大输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一些数字和非数字字符:");
// 获取用户输入
String input = scanner.nextLine();
// 初始化索引
int index = 0;
// 遍历输入字符串,过滤出数字并添加到数组
for (int i = 0; i < input.length(); ) {
if (Character.isDigit(input.charAt(i))) {
numbers[index++] = Integer.parseInt(input.substring(i, i+1));
i++;
} else {
i++; // 跳过非数字字符
}
}
// 输出处理后的数字数组
System.out.println("纯数字数组:");
for (int i = 0; i < index; i++) {
System.out.print(numbers[i] + " ");
}
scanner.close();
}
}
```
这里,我们创建了一个`int`数组,并在找到新数字时更新索引位置。
**使用`LinkedList`**:
```java
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一些数字和非数字字符:");
// 获取用户输入
String input = scanner.nextLine();
// 遍历输入字符串,过滤出数字并添加到链表
for (int i = 0; i < input.length(); ) {
if (Character.isDigit(input.charAt(i))) {
numbers.addLast(Integer.parseInt(input.substring(i, i+1)));
i++;
} else {
i++; // 跳过非数字字符
}
}
// 输出处理后的数字链表
System.out.println("纯数字链表:");
for (int num : numbers) {
System.out.print(num + " ");
}
scanner.close();
}
}
```
在这里,我们使用了`LinkedList`,它可以动态地在两端添加元素,无需预先指定大小。
阅读全文