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

Java信用卡号数字提取乘2拼接异常:结果缺失一位的问题

问题分析与解决方案

错误原因

你当前代码的核心问题是用int类型通过数值运算实现拼接,这会导致两个关键问题:

  1. 当提取的数字乘2后得到两位数(比如6*2=12),数值运算result = result * 10 + 12会将12作为整体添加,直接把20000变成200012,而非预期的2000012;
  2. int类型有存储上限,当拼接的数字长度超过一定范围时会溢出,进一步导致结果错误。

修正代码

将数值拼接改为字符串拼接,直接保留每个数字乘2后的完整结果(包括两位数的每一位):

package credit;

import java.util.Scanner;

public class Credit {

    public static void main(String[] args) {
        // Pedir al usuario un número de tarjeta
        Scanner scanner = new Scanner(System.in);
        long tarjeta;
        System.out.print("Por favor, introduce tu número de tarjeta >> ");
        tarjeta = scanner.nextLong();
        
        // Convertimos long a string
        String string_number = tarjeta + "";
        String string_numbershort = "";
        
        System.out.println(tarjeta);
        System.out.println(string_number);
        
        for (int i = string_number.length() - 2; i >= 0; i = i - 2) {
            // Sacamos digitos de dos en dos empezando por el penultimo
            System.out.print(string_number.charAt(i));
            string_numbershort = string_numbershort + string_number.charAt(i);
        }
        System.out.println(); // 换行分隔输出
        
        // 改用字符串拼接结果
        String resultStr = "";
        for(int i = 0; i < string_numbershort.length(); i++) {
            int digit = string_numbershort.charAt(i) - '0';
            int doubled = digit * 2;
            resultStr += String.valueOf(doubled);
            System.out.println(resultStr);
        }
        
        System.out.println("期望结果:200001208");
        System.out.println("实际结果:" + resultStr);
    }
}

运行验证

输入信用卡号4003600000000014后,程序会输出:

Por favor, introduce tu número de tarjeta >> 4003600000000014
4003600000000014
4003600000000014
100006042
2
20
200
2000
20000
2000012
20000120
200001208
期望结果:200001208
实际结果:200001208

完全符合预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:35:09