题解 | 复读机
复读机
https://www.nowcoder.com/practice/9d381551b6ab40c4b5c3c8d60fe4066e
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
// 用BufferedReader逐行读取标准输入(对应Python的sys.stdin遍历)
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String line;
// 循环读取每一行,直到输入结束(对应Python的for line in sys.stdin)
while ((line = br.readLine()) != null) {
// 按任意空白字符分割(等价于Python的split()),先去除首尾空白避免空字段
String[] fields = line.trim().split("\\s+");
// 空行直接跳过(避免原Python代码中空行split()返回空列表取[0]报错)
if (fields.length == 0) {
continue;
}
String a = fields[0]; // 取第一个字段
// 判断是否包含小数点(等价于Python的 '.' in a)
if (a.contains(".")) {
try {
// 转换为浮点数并保留1位小数输出(等价于Python的format(float(a), '.1f'))
double num = Double.parseDouble(a);
// 用String.format格式化,与Python的格式化规则(四舍五入)一致
System.out.println(String.format("%.1f", num));
} catch (NumberFormatException e) {
// 包含小数点但不是合法浮点数(如"123.a"),原Python会抛异常,此处输出原内容(更鲁棒)
System.out.println(a);
}
} else {
// 无小数点,直接输出原内容(等价于Python的print(a))
System.out.println(a);
}
}
} catch (IOException e) {
// 处理输入读取IO错误(如输入流中断)
System.err.println("读取输入错误: " + e.getMessage());
}
}
}
查看4道真题和解析
