将多个整数作为单个值返回

时间:2014-09-23 01:59:44

标签: java oop

嘿我正在研究一种方法,该方法从两个传递的整数中的几十,几百和几千个位置中选取最小的数字,然后返回由每个位置的最小值组成的int。例如,如果int a = 4321并且int b = 1957,那么该方法将返回1321.这是我的代码到目前为止,我认为我得到了所有内容,但我无法找到如何正确地将新值作为整数返回。

public static int biggestLoser(int a, int b){
    int first;
    int second;
    int third;
    int fourth;
    if(a>9999 || a<1000 || b>9999 || b<1000){
        if(a>b)
            return b;
        else
            return a;
        }
    else{
        if(a%10 < b%10)
            first=a%10;
        else
            first=b%10;
        if(a/1000<b/1000)
            fourth=a/1000;
        else
            fourth=b/1000;
        if(a/100%10<b/100%10)
            second=a/100%10;
        else
            second=b/100%10;
        if(a/10%10<b/10%10)
            third=a/10%10;
        else
            third=b/10%10;
        //int total=fourth,third,second,first;?????
        //return total;
    }
}

5 个答案:

答案 0 :(得分:2)

首先,您的代码有一个小错误。您必须更换secondthird的代码。

if(a/100%10<b/100%10)
    third=a/100%10;
else
    third=b/100%10;
if(a/10%10<b/10%10)
    second=a/10%10;
else
    second=b/10%10;

修好之后,只需说:

int total = first + 10 * second + 100 * third + 1000 * fourth;
return total;

就是这样。

答案 1 :(得分:0)

您可以先形成字符串,然后执行Integer.parseInt()或像int total = (first*1)+(second*10)+(third*100)+(fourth*1000);那样进行数学运算。

答案 2 :(得分:0)

最好实现这样的事情:

int returnValue = 0;
for(int digit = 0; digit < 4; digit++) {
    int aDigit = (a / Math.pow(10, digit)) % 10; // Gets the digit
    int bDigit = (b / Math.pow(10, digit)) % 10;
    int max = (a > b)? a : b; // Calculates de maximum digit
    returnValue += max * Math.pow(10, digit); //Adds the new digit to the return value
}
return returnValue;

答案 3 :(得分:0)

int i=1000,z=0;
  do{
   int x = a/i;
   a=a%i;
   int y = b/i;
   b=b%i;
   if(x<y)
     z+=x*i;
   else z+=y*i;
   i=i/10;
}while(i>0);
 return z;
//this is just logic, works for 4 digit numbers

答案 4 :(得分:0)

只是将值作为int数组返回。我已经重构了你的方法来做到这一点

public static int[] biggestLoser(int a, int b){
int first;
int second;
int third;
int fourth;
int [] values;
if(a>9999 || a<1000 || b>9999 || b<1000){
    if(a>b)
        return b;
    else
        return a;
    }
values = new int[4];
else{
    if(a%10 < b%10)
        first=a%10;
    else
        first=b%10;
    if(a/1000<b/1000)
        fourth=a/1000;
    else
        fourth=b/1000;
    if(a/100%10<b/100%10)
        second=a/100%10;
    else
        second=b/100%10;
    if(a/10%10<b/10%10)
        third=a/10%10;
    else
        third=b/10%10;
    //int total=fourth,third,second,first;?????
    values[0] = first;
    values[1] = second;
    values[2] = third;
    values[3] = fourth;
    return value;
}

}

在main方法中,您现在可以通过for循环获取数组的每个元素

 for(int x : values){
     System.out.print(x);
 }