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

如何仅用5种基础算术运算符横向拆分整数(禁用循环、条件判断等)

整数横向拆分解决方案

问题分析

需要将整数横向拆分输出(如1234拆分为1 2 3 4),且严格遵循规则:

  • 禁止使用if等条件判断语句、for/while等循环语句及数组
  • 仅允许使用+、-、*、/、%五种基础算术运算符拆分数字

方案1:严格遵循规则(含前导零输出)

此方案完全符合规则,仅用算术运算符拆分每一位,直接输出所有位(包括高位的0),适用于所有int范围的整数:

import java.util.Scanner;

public class SeparateDigits {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter a full number: ");
        int number = scanner.nextInt();
        
        separateAndPrintDigits(number);
        
        scanner.close();
    }
    
    public static void separateAndPrintDigits(int number) {
        // 处理负数符号
        int num = Math.abs(number);
        System.out.print(number < 0 ? "-" : "");
        
        System.out.print("Separating digits: ");
        // 依次输出每一位(从十亿位到个位)
        System.out.print(num / 1000000000 + " ");
        System.out.print((num / 100000000) % 10 + " ");
        System.out.print((num / 10000000) % 10 + " ");
        System.out.print((num / 1000000) % 10 + " ");
        System.out.print((num / 100000) % 10 + " ");
        System.out.print((num / 10000) % 10 + " ");
        System.out.print((num / 1000) % 10 + " ");
        System.out.print((num / 100) % 10 + " ");
        System.out.print((num / 10) % 10 + " ");
        System.out.println(num % 10);
    }
}

方案2:优化输出(去除前导零,使用三元表达式)

如果允许使用三元表达式(条件表达式而非条件判断语句),可以实现无前置零的输出,更贴合需求示例:

import java.util.Scanner;

public class SeparateDigits {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter a full number: ");
        int number = scanner.nextInt();
        
        separateAndPrintDigits(number);
        
        scanner.close();
    }
    
    public static void separateAndPrintDigits(int number) {
        // 处理负数符号
        System.out.print(number < 0 ? "-" : "");
        int num = Math.abs(number);
        
        System.out.print("Separating digits: ");
        
        // 十亿位
        int d1 = num / 1000000000;
        System.out.print(d1 != 0 ? d1 + " " : "");
        // 亿位
        int d2 = (num / 100000000) % 10;
        System.out.print((d1 != 0 || d2 != 0) ? d2 + " " : "");
        // 千万位
        int d3 = (num / 10000000) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0) ? d3 + " " : "");
        // 百万位
        int d4 = (num / 1000000) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0) ? d4 + " " : "");
        // 十万位
        int d5 = (num / 100000) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0 || d5 != 0) ? d5 + " " : "");
        // 万位
        int d6 = (num / 10000) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0 || d5 != 0 || d6 != 0) ? d6 + " " : "");
        // 千位
        int d7 = (num / 1000) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0 || d5 != 0 || d6 != 0 || d7 != 0) ? d7 + " " : "");
        // 百位
        int d8 = (num / 100) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0 || d5 != 0 || d6 != 0 || d7 != 0 || d8 != 0) ? d8 + " " : "");
        // 十位
        int d9 = (num / 10) % 10;
        System.out.print((d1 != 0 || d2 != 0 || d3 != 0 || d4 != 0 || d5 != 0 || d6 != 0 || d7 != 0 || d8 != 0 || d9 != 0) ? d9 + " " : "");
        // 个位
        System.out.println(num % 10);
    }
}

说明

  • 方案1严格遵循所有规则,但会输出高位的0(如输入1234会输出0 0 0 0 0 0 1 2 3 4)
  • 方案2使用三元表达式实现无前置零输出,更符合示例效果,若规则严格禁止任何条件判断逻辑,建议使用方案1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:54:53