输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。 【输入文件】 从当前目录下的trans.in文件中取得输入。 该文件内只有一行,含有数字和其它任意字符。该行最长含80个字符。 【输出文件】 将输出打印到当前目录下的trans.out文件中。 输出文件第一行为字符串包含的整数个数,第二行依次为各个整数,各整数之间用一个空格分隔。在第二行末也要输出一个回车符。用Java编写
时间: 2024-02-11 13:07:08 浏览: 105
MidasCore_1.8.3_183000_c2e03049465008667d1c5a9adfd990e1.apk
以下是Java代码实现:
```java
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 读取输入文件
BufferedReader br = new BufferedReader(new FileReader("trans.in"));
String str = br.readLine();
br.close();
// 统计整数个数
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
if (i == 0 || !Character.isDigit(str.charAt(i-1))) {
count++;
}
}
}
// 输出结果到输出文件
PrintWriter pw = new PrintWriter(new FileWriter("trans.out"));
pw.println(count);
int[] nums = new int[count];
int idx = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
sb.append(str.charAt(i));
} else {
if (sb.length() > 0) {
nums[idx++] = Integer.parseInt(sb.toString());
sb = new StringBuilder();
}
}
}
if (sb.length() > 0) {
nums[idx++] = Integer.parseInt(sb.toString());
}
for (int i = 0; i < count; i++) {
pw.print(nums[i] + " ");
}
pw.println();
pw.close();
}
}
```
该代码通过读取输入文件和输出文件实现了对字符串中整数的统计和输出。具体步骤如下:
1. 使用`BufferedReader`从输入文件中读取一行字符串。
2. 遍历字符串中的每个字符,如果当前字符是数字且前一个字符不是数字,则将整数个数加1。
3. 使用`PrintWriter`向输出文件中写入整数个数。
4. 遍历字符串中的每个字符,如果当前字符是数字,则将其添加到一个`StringBuilder`对象中。
5. 如果当前字符不是数字且`StringBuilder`对象非空,则将其转换为整数并存入一个数组中。
6. 遍历整数数组并将其输出到输出文件中,各整数之间用一个空格分隔。
阅读全文