【问题标题】:change from base 9 to base ten从基数 9 更改为基数 10
【发布时间】:2015-10-19 07:22:49
【问题描述】:

我正在从基础开始学习 java,并且我设定了自己构建基础转换器的初始目标,但我迷失了:

什么时候开始:numero=numero+(mult*c) 最初的 numero 是 0c4mult1,然后下一个 numero 变成 52 而不是 4,也许我是混合字符串和整数?

 public class nintodec {
    public static void main(String[] args) {
        int number;
        System.out.println("enter base nine number");
        number = 1234;
        int num = number;
        String cadena = "";
        int numero = 0;
        cadena = String.valueOf(num);
        cadena = Integer.toString(num);
        String reverse = new StringBuffer(cadena).reverse().toString();
        int mult = 1;
        for (int i = 0; i < reverse.length(); i++) {
            char c = reverse.charAt(i);
            System.out.println("  c:" + c + "  mult:" + mult);
            numero = numero + (mult * c);
            System.out.println("   numero" + numero);
            mult = mult * 9;
        }
        System.out.println(numero);

        //when its gonna do: `numero=numero+(mult*c)` initially numero is 0, c is 4 and mult is 1 and then next numero becomes 52 instead of 4

有什么帮助吗?

【问题讨论】:

    标签: java base


    【解决方案1】:

    char c = '4' 的 ASCII 值是多少?它是 52。您需要将其转换回整数。

    int value = (int)c.charValue();
    

    numero = numero + (mult * c);
    System.out.println("   numero" + numero);
    mult = mult * 9;
    

    这字面意思是:

    0 = 0 + (1 * 52) 因为字符 c = '4' 的 ascii 值为 52。

    将这一行:numero = numero + (mult * c) 翻译成:numero = numero + (mult * value) 其中 value 是表达式 int value = (int)c.charValue();

    int value = (int)c.charValue(); 取自用户 SLaks 来自This question.

    【讨论】:

      【解决方案2】:

      学习 Java 真好,继续努力! 无论如何,这里的问题是c 不是4 而是'4',一个值为52 的ASCII 字符。你需要将它转换为一个int。

      另外,你真的不需要字符串来解决这个问题,尝试使用模运算,它会更干净。

      【讨论】:

        【解决方案3】:

        正题,为什么c52而不是4

        排队

           numero = numero + (mult * c);
        

        c 是一个字符,所以c 实际上是'4' 而不是4。你必须取整数等价于character 4 ('4')

        最快的方法是减去480的ASCII值),因为当你从'4'订阅'0'时,就是

            '4' - '0'
        

        将为您提供'4''0' 的偏移量,这相当于40 的偏移量,即4

        所以你的行将被改为:

               numero = numero + (mult * (c-48));
        

        一个免费的建议:有更好的方法来做你想做的事情,因为你正在学习,所以你尝试完成它,然后尝试以更好的方式实施。

        【讨论】:

          猜你喜欢
          • 2011-06-25
          • 2017-09-11
          • 1970-01-01
          • 1970-01-01
          • 2019-11-27
          • 1970-01-01
          • 1970-01-01
          • 2016-01-13
          • 1970-01-01
          相关资源
          最近更新 更多