Java 如何在不使用字符串的情况下确定输入的整数是否包含某些数字
在这个程序中,我应该计算出用户输入的整数是否包含某个数字(在本例中为7和3),然后返回一个布尔值。到目前为止,我已经:Java 如何在不使用字符串的情况下确定输入的整数是否包含某些数字,java,while-loop,integer,boolean,Java,While Loop,Integer,Boolean,在这个程序中,我应该计算出用户输入的整数是否包含某个数字(在本例中为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 input
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;
}
据我所知,解决这个问题的最佳方法是使用%.%或模数返回一个数/另一个数的余数。例如,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;
}
希望通过调用模块10来检索此号码的最后一位数字,这对您有所帮助。
在
num
上执行,然后在num/10
上执行,然后在num/100
上执行,直到迭代所有数字(即除法结果>0)
你可以这样写:
int currentNumber = num;
while (currentNumber > 0 ) {
if (currentNumber % 10 == x){
return true;
}
currentNumber = currentNumber / 10;
}
return false;
请注意,布尔变量是无效的。只要一个数字等于
x
,就要返回true
,因此直接在条件语句块中返回true
,然后返回false代码>在while
语句之后。此代码对于contains(0,0)也能正确工作:
对于x>9或x<0,您必须编写一个保护语句,对于num(和/或x)<0,您应该首先使用Math.abs。对于包含(0,0)
失败,这对我来说似乎是一个合理的问题。事实上,这是一个可能需要处理的极端情况。您建议的do/while
或循环之前的条件语句可以执行此任务:if(num==0&&x==0){return true;}
失败,因为包含(0,0)
,这对我来说似乎是一个合理的问题。可能重复
boolean contains (int num, int x) {
do {
if (num % 10 == x){
return true;
}
num /= 10;
} while (num > 0);
return false;
}