Java(数百,数千等)

时间:2010-08-15 10:03:04

标签: java methods

我想构建一个方法,如果输入的数字是数千(例如1000),则输出3458,如果输入的数字是数百,则100,依此类推。这可能吗?

6 个答案:

答案 0 :(得分:5)

当然有可能。你为什么不发表你所尝试的内容,我们可以指导你如何解决任何问题。

答案 1 :(得分:4)

正如史蒂夫所说的那样,首先给自己做一点尝试是个好主意,然后带着一个特定的问题来到SO(即“我正在做X,这是我的代码,为什么不是Y发生?” )。

然而,作为一个小提示,假设你有纯粹的数字输入(即它总是只是一个数字流,没有“,”或类似的东西),你实际上可以只使用字符串来处理 - 没有需要使用数值类型(int等)...

(好吧,考虑到这一点,最后可能会有一些数学,以获得'100'或'1000'等的最终结果,但不多。)

答案 2 :(得分:2)

要扩展Yuval提供的内容,如果您不关心数字的符号(即,输入值,例如+3456和-3456都应返回1000),则可以使用绝对值输入:

return Math.pow(10, Math.floor(Math.log( Math.abs(n) ) / Math.log(10))); // for input n

如果你想处理所有可能的数字输入,你也可以在计算之前处理零值:

if (n == 0) // for input n
    return 0;
return Math.pow(10, Math.floor(Math.log( Math.abs(n) ) / Math.log(10))); // for input n

log(0)未定义,所以你不想在n == 0时执行计算。你会得到一个有趣的答案(如果你得到答案......我没有运行这段代码)。鉴于您提供的问题的描述,我认为当输入为0时返回0是有意义的。零不是数千或数百或数十或者 - 在整数中,它是它自己的类别。所以你可以返回0.或者你可以抛出异常。

答案 3 :(得分:2)

它不是花哨的,但它简单易读。

private static void homework(int n) {
    if (n > 9999) {
        System.out.println("Really big");
    } else {

        if (n <= 99 ) {
            System.out.println("Really small");
        } else if (n <= 999) {
            System.out.println("Hundred");
        } else if ( n <= 9999) {
            System.out.println("Thousand");
        } else {
            System.out.println("How did this get here? I'm not good with computer!");
        }

    }
}

答案 4 :(得分:1)

简单的数学:

Math.pow(10, Math.floor(Math.log(n) / Math.log(10))) // for given n

答案 5 :(得分:1)

循环可以用来避免使用double和最终的舍入问题(如果将结果转换为int)。
循环变量以1开始,每次传递乘以 10,而(下一个)结果小于输入数字。
负输入和零输入需要特殊处理。