返回最大的三位数字

时间:2015-09-27 23:18:07

标签: java eclipse if-statement

我必须编写以下方法: 它将返回最大的3位数字 d1,d2和d3。 d1,d2和d3都是个位数。

例如,threeDigit(3,2,9)将返回932。

这是我到目前为止所写的内容:

public static int threeDigit(int d1, int d2, int d3){
    if(d1>d2 && d1>d3 && d2>3)
        return d1+d2+d3;
    if(d1>d2 && d1>d3 && d3>d2)
        return d1+d3+d3;
    if(d2>d1 && d2>d3 && d1>d3)
        return d2+d1+d3;
    if(d2>d1 && d2>d3 && d3>d2)
        return d2+d3+d1;
    if(d3>d1 && d3>d2 && d1>d2)
        return d3+d1+d2;
    return d3+d2+d1;
}

但它只返回三个数字的总和。我怎样才能让它自己返回数字?

4 个答案:

答案 0 :(得分:2)

您可以使用String,然后在返回时将其投放到int

public static int threeDigits(int a, int b, int c){
    String finalStr ="";
    int max, mid, min;
    // Your tests
    finalStr += max + mid + min;
    return Integer.parseInt(finalStr);
}

注意:

我会使用>=来简化您的测试。想象一下,有三倍的相同数字。

答案 1 :(得分:1)

您可以使用StringBuilderInteger#valueOf

public static int threeDigit(int... d1) {
    Arrays.sort(d1);
    StringBuilder numString = new StringBuilder();
    for (int i = (d1.length - 1); i >= 0; i--) {
        numString.append(d1[i]);
    }
    return Integer.valueOf(numString.toString());
}

或者,如果您只想使用整数,则可以采用以下方法:

public int threeDigit(int d1, int d2, int d3) {
    // Populate an array with the numbers
    int[] values = new int[]{d1, d2, d3};
    // Sort the array
    Arrays.sort(values);
    // Initialize the variable that will be returned
    int result = 0;
    // Reverse loop through the array to get 
    // the largest number.
    for (int i = (values.length - 1); i >= 0; i--) {
        // Ensure that each digit fits the single 
        // non-negative digit constraint
        if (values[i] > 9 || values[i] < 0) {
            // Throw an exception
            throw new java.lang.IllegalArgumentException("Bad Value: " + values[i]);
        }
        // Use the index in order to determine place value. 
        // Example: 10^2 * 3 + 10^1 * 2...
        result += Math.pow(10, i) * values[i];
    }
    // Return the largest possible digit.
    return result;
}

答案 2 :(得分:0)

带整数的+号将添加数字。

带字符串的+符号将连接它们,将数字转换为字符串的最简单方法如下:

int i;
String s1 = "" + i;

您需要在if语句和将数字转换为字符串的return语句之间添加一个步骤。

答案 3 :(得分:0)

你应该改变return语句。

public static int threeDigit(int d1, int d2, int d3) {
    if (d1 > d2 && d1 > d3 && d2 > d3)
        return d1 * 100 + d2 * 10 + d3;

并写下其他人:)