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:
例如foo(2134, 2154)
返回1.
两个参数都是四位数。除了第三个数字,Tthey同意所有数字。
第一个条件正常,当所有数字的数量相等时返回1,但我不知道如何解决第二个条件,我必须在程序中使用这两个函数。
static int length(int n) {}
static int nthDigit(int number, int n) {}
任何帮助如何解决第二个条件?
答案 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;
}
}