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

字符串中数字求和问题:代码可运行但输出结果错误

代码错误分析与修正

存在的问题

  • Scanner初始化错误:new Scanner("System.in") 会将字符串"System.in"作为输入源,而非读取控制台输入,正确写法是new Scanner(System.in)。
  • 字符转数字逻辑错误:s.charAt(i)返回的是字符的ASCII码值(比如字符'1'的ASCII是49),直接对该值取模判断奇偶、累加ASCII值转成的整数,完全偏离了实际数字的计算逻辑。
  • 缺少数字校验:若输入字符串包含非数字字符,代码会抛出转换异常,需先判断字符是否为数字。

修正后的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int sumeven = 0;
        int sumodd = 0;
        
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            // 先判断当前字符是否为数字
            if (Character.isDigit(c)) {
                int num = Character.getNumericValue(c);
                if (num % 2 == 0) {
                    sumeven += num;
                } else {
                    sumodd += num;
                }
            }
        }
        
        System.out.println(sumeven + " " + sumodd);
    }
}

修正说明

  1. 修正Scanner初始化方式,现在可以正确读取控制台输入内容。
  2. 新增数字字符校验,避免非数字字符引发的转换异常。
  3. 使用Character.getNumericValue(c)将字符转换为对应整数(如'5'转为5),再进行奇偶判断与累加,逻辑符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:47:02