我必须编写以下方法: 它将返回最大的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;
}
但它只返回三个数字的总和。我怎样才能让它自己返回数字?
答案 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)
您可以使用StringBuilder
和Integer#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;
并写下其他人:)