基础Java程序在Pearson MyProgrammingLab无输出 其他IDE运行正常求助
问题原因及修复方案
无输出的核心原因
- 输出缓冲未主动刷新:你使用
System.out.print()输出提示语时没有携带换行符,Java标准库的PrintStream默认采用行缓冲策略,只有遇到换行符、缓冲区满、主动调用flush()时才会将缓冲区内容输出到标准输出流。本地IDE通常做了自动刷新的优化,所以能正常显示,但Pearson MyProgrammingLab的测评环境遵循严格的标准缓冲逻辑,提示语留在缓冲区未输出时,测评程序不会注入预设的测试输入5.5,程序会一直卡在input.nextDouble()的读取步骤,自然不会有后续输出。 - 入口方法修饰符不符合规范:Java语言规范明确要求程序入口的main方法必须用
public修饰,你代码中的main方法没有加public,部分本地JVM实现兼容非public的main方法,但Pearson的类加载逻辑严格遵循规范,找不到符合要求的入口方法时程序根本不会正常执行,也就没有输出。
额外适配要求
平台要求最终面积保留两位小数输出,直接拼接double类型变量会输出多位小数,即使解决了无输出问题也会被判结果不符。
修复后可正常运行的代码(输出内容已按要求翻译为中文)
import java.util.Scanner; public class Area { public static void main (String[] args) { Scanner input = new Scanner (System.in); System.out.print("请输入边长:"); // 主动刷新输出缓冲,确保提示语优先输出触发平台注入测试输入 System.out.flush(); double s = input.nextDouble(); double area = (6 * Math.pow(s, 2)) / (4 * Math.tan(Math.PI/6)); // 格式化输出保留两位小数,匹配平台精度要求 System.out.printf("正六边形的面积为 %.2f", area); input.close(); } }
输入5.5时运行输出为:请输入边长:正六边形的面积为 78.59,和预期一致。
内容的提问来源于stack exchange,提问作者Apollo
相关产品推荐
相关产品推荐

