格林德沃安 2022-03-19 18:29 采纳率: 100%
浏览 53
已结题

Java念整数的题,究竟哪里出错了

题目如下:

img

代码如下,只能读出第一位数字,不知道哪里出错了

Scanner in = new Scanner(System.in);
        int x=in.nextInt();
        
//        判断整数x是否在指定范围内
        if(x>-100000 && x<100000)
        {
//            如果是负数,先输出fu,然后转换为正数,方便运算
            if(x<0)
            {
                System.out.print("fu ");
                x=(-1)*x;
            }
//            计算整数的mode
            int mode=1;
            int t=x;
            while(t>9)
            {
                mode=mode*10;
                t=t/10;
            }
//            先计算整数的位数n,然后用mode正序分解出整数各个位数,并读出数字
            int n=Integer.toString(x).length();
            for(int i=0;i<n;i++);
            {
                int digit = x/mode;
                switch(digit)
                {
                case 1:
                    System.out.print("yi ");
                    break;
                case 2:
                    System.out.print("er ");
                    break;
                case 3:
                    System.out.print("san ");
                    break;
                case 4:
                    System.out.print("si ");
                    break;
                case 5:
                    System.out.print("wu ");
                    break;
                case 6:
                    System.out.print("liu ");
                    break;
                case 7:
                    System.out.print("qi ");
                    break;
                case 8:
                    System.out.print("ba ");
                    break;
                case 9:
                    System.out.print("jiu ");
                    break;
                case 0:
                    System.out.print("ling ");
                    break;
                }
                x=x%mode;
                mode=mode/10;
            }
        }
        else
        {
            System.out.println("输入有误,请重新输入");
        }
        in.close();

  • 写回答

1条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-03-19 21:28
    关注
    public static void main(String[] args) {
        String[] numStr = {"gnil", "iy", "re", "nas", "is", "uw", "uil", "iq", "ab", "uij"};
        System.out.print("输入一个整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if (num < -100000 || num > 100000) {
            System.out.println("输入错误");
            return;
        }
        StringBuilder stringBuilder = new StringBuilder();
        int numAbs = Math.abs(num);
        while(numAbs >= 1) {
            stringBuilder.append(numStr[numAbs % 10]).append(" ");
            numAbs = numAbs / 10;
        }
        if (num < 0) {
            stringBuilder.append("uf");
        }
        System.out.println(stringBuilder.reverse().toString());
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题