You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codewars基础运算类测试报错:return失效与输入流问题求助

问题分析与修复方案

为什么会报错?

你完全搞错了basicMath方法的设计逻辑:

  • 题目要求这个方法接收传入的操作符和两个数值参数,直接返回计算结果,但你在方法里用Scanner从控制台读取输入,把传入的参数全覆盖了。
  • Codewars的JUnit测试是直接传参调用方法,不会给你提供控制台输入,所以Scanner.nextLine()会因为找不到输入行抛出异常,就是你看到的"No line found"。
  • 本地能跑是因为你手动在IDE控制台输入了数据,测试环境没这个交互环节。

修复后的代码

public class BasicOperations { 
  public static Integer basicMath(String op, int v1, int v2) {
      switch (op) {
          case "+":
              return v1 + v2;
          case "-":
              return v1 - v2;
          case "*":
              return v1 * v2;
          case "/":
              return v1 / v2;
          default:
              return null; // 处理未知操作符,可选
      }
  }
}

优化点说明

  • 删掉了多余的Scanner和静态变量finalResult,直接在每个case分支返回结果,代码更清爽高效。
  • 加了default分支,防止遇到未知操作符时没有返回值的情况,让代码更健壮。

额外提醒

Codewars的题目一般都是让你实现纯逻辑方法:接收参数、处理逻辑、返回结果,不需要自己处理输入输出——测试用例已经帮你把参数传进来,还会校验你的返回值对不对,你只需要专注写计算逻辑就行。

内容的提问来源于stack exchange,提问作者Swansea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:20:48