如何解决这个问题的第二个条件

时间:2014-03-09 17:12:44

标签: java

package pks;

public class Example {

    public static void main(String args[])
    {
        System.out.println(foo(2134,2154));
    }

    static int foo(int n1, int n2) {
        if (length(n1)==length(n2)) {
            return 1;
        }
        else {
            return 0;
        }
    }

    static int length(int n) {
        int numDigits = 0;
        while (n > 0) {   // Assumes n is >= 0
            numDigits++;
            n = n / 10;
        }
        if (numDigits == 0) {
            numDigits = 1;
        }
        return numDigits;
    }

    static int nthDigit(int number, int n) {
        int digit = 0;
        for (int i = 0; i <= n; i++) {  // Assumes n is >= 0
            digit = number % 10;
            number /= 10;
        }
        return digit;
    }
}

该程序的输出为1.

我需要编写一个函数,“函数static int foo(int n1, int n2)的签名”,它接受两个整数参数,如果满足这两个条件则返回1:

  1. 参数包含相同的位数。
  2. 从右到左比较参数中的数字只会找到一个不同的数字。
  3. 例如foo(2134, 2154)返回1.

    两个参数都是四位数。除了第三个数字,Tthey同意所有数字。

    第一个条件正常,当所有数字的数量相等时返回1,但我不知道如何解决第二个条件,我必须在程序中使用这两个函数。

    static int length(int n) {}         
    
    static int nthDigit(int number, int n) {}
    

    任何帮助如何解决第二个条件?

3 个答案:

答案 0 :(得分:1)

因为这显然是家庭作业,我不会直接回答这个问题。以下是您可以完成的一些pseudocode

//initialize a counter to zero
//loop the number of digits in the number
    //compare the two digits at the current iteration
        //if they are different, add one to the counter
    //otherwise, do nothing
//if the counter is equal to one, the second condition is satisfied and the method should return 1.
//otherwise, return 0.

答案 1 :(得分:0)

您可以遍历这两个数字并比较每个数字的第n个数字,并保持计数器的不同位数。如果数字太多,则返回false,否则返回true。

答案 2 :(得分:0)

您可以将整数转换为字符串并使用charAt进行比较

public int compareInts(int num1, int num2) {
  String num1String = Integer.toString(num1);
  String num2String = Integer.toString(num2);
  if (num1String.length() != num2String.length()) {
    return 0;
  }
  else {
    int differenceCount = 0;
    for (int i = 0; i < num1String.length(); i++) {
      if (num1String.charAt(i) != num2String.charAt(i)) {
        differenceCount++;
        if (differenceCount > 1) {
          return 0;
        }
      }
    }
    return 1;
  }
}