Java String类型返回方法是否合规?运行出现Launch error求排查
排查你的Java方法错误 & 确认返回类型使用正确性
首先先给你吃个定心丸:你对方法返回类型的使用是正确的——方法声明为String类型,你也确实在方法末尾返回了一个String对象,这完全符合作业的要求。
接下来咱们说说导致Launch error的核心问题:
- 你的代码里有一行
pros.get(System.out);,这是完全错误的!Properties.get()方法要求传入一个String类型的属性键名(比如"os.name")来获取对应的值,但你传的System.out是一个PrintStream对象,类型完全不匹配,这会直接触发编译错误,进而导致启动失败。这行代码看起来是多余的,直接删掉就能解决最核心的问题。
另外,我还帮你优化了代码的其他细节,让它更高效、可读性更强:
- 你之前重复调用了好几次
System.getProperty(),比如os.name被调用了三次,我把这些属性值提前存到变量里,既减少了重复调用的开销,也让代码更整洁。 - 你原来的返回值是把所有属性直接生硬拼接在一起,可读性很差,我用
StringBuilder构建了一个和控制台输出格式一致的字符串,这样返回的内容更有意义,也和你打印的内容对应上了。
修正后的完整代码如下:
public static String displaySystemProperties() { // 提前获取所有需要的系统属性并存储到变量 String osArch = System.getProperty("os.arch"); String osName = System.getProperty("os.name"); String osVersion = System.getProperty("os.version"); String userName = System.getProperty("user.name"); String javaVersion = System.getProperty("java.version"); // 使用StringBuilder构建要返回的字符串 StringBuilder resultBuilder = new StringBuilder(); resultBuilder.append("\n"); resultBuilder.append("*****System Properties*****").append("\n"); resultBuilder.append("Operating System Architecture: ").append(osArch).append("\n"); resultBuilder.append("Operating System Name: ").append(osName).append("\n"); resultBuilder.append("Operating System Version: ").append(osVersion).append("\n"); resultBuilder.append("User Account Name: ").append(userName).append("\n"); resultBuilder.append("Java Version: ").append(javaVersion).append("\n\n"); // 操作系统判断逻辑 if ("Windows 10".equals(osName)) { resultBuilder.append("Thumbs up! Your operating system is Windows 10").append("\n"); } else if ("Linux".equals(osName)) { resultBuilder.append("Thumbs down! Your operating system is Linux").append("\n"); } else { resultBuilder.append("Your choice of operating system is ok").append("\n"); } // 控制台输出(如果不需要可以删除这行) System.out.print(resultBuilder); // 返回构建好的字符串 return resultBuilder.toString(); }
额外提个小细节:我把osName.equals("Windows 10")改成了"Windows 10".equals(osName),这样可以避免如果osName为null时抛出空指针异常,是个更安全的写法~
内容的提问来源于stack exchange,提问作者Giselle Tadman
相关产品推荐
相关产品推荐

