在这个程序中,我应该弄清楚用户输入的整数是否包含某个数字(在本例中为7和3),然后返回一个布尔值。到目前为止,我有:
public static boolean contains(int num, int x) {
Scanner input = new Scanner(System.in);
int currentLength = numberDigits(num); //method that counts the number of digits in the inputed integer
int digit; // current first digit
int firstNumber = firstNum(num);
boolean digitTrue = false;
while (currentLength > 0 ) {
digit = firstNumber;
if (num == x)
{
digitTrue= true;
} else {
digitTrue= false;
}
}
return digitTrue;
}
答案 0 :(得分:0)
我知道解决这个问题的最佳方法是使用%。 %或Modulus返回一个数字的余数/另一个数字。例如,5%2 = 1或355%10 = 5.如果您只想检查一个大数字的单位数字,我会建议这种方法
public static boolean contains(int num, int x){
while(num >= 0){
if (num % 10 == x){
return true;
}
if (num > 0){
num = num / 10;
}else{
return false;
}
}
return false;
}
希望这有助于
答案 1 :(得分:0)
通过在数字上调用模块10,您可以检索此数字的最后一位数字
在num
上执行,然后在num/10
上执行,然后在num/100
上执行,直到您迭代所有数字(即分割结果为> 0时)。
你可以写:
int currentNumber = num;
while (currentNumber > 0 ) {
if (currentNumber % 10 == x){
return true;
}
currentNumber = currentNumber / 10;
}
return false;
请注意,布尔变量无能为力
您希望在数字等于true
时立即返回x
,因此return true
直接在条件语句块中返回return false;
并在while
语句后返回{{1}}。 / p>
答案 2 :(得分:0)
此代码也适用于contains(0,0):
boolean contains (int num, int x) {
do {
if (num % 10 == x){
return true;
}
num /= 10;
} while (num > 0);
return false;
}
对于x> 9或x< 0,你必须写一个保护语句和num(和/或x)< 0你应该首先使用Math.abs。