Java 给定正整数n,打印“;有1”;如果包含1位数字,则打印“;没有1”;
它使用“has1”,但当没有数字1时,它不会打印任何内容。缺少什么?当前代码的逻辑无法实现您希望实现的目标。因为当Java 给定正整数n,打印“;有1”;如果包含1位数字,则打印“;没有1”;,java,Java,它使用“has1”,但当没有数字1时,它不会打印任何内容。缺少什么?当前代码的逻辑无法实现您希望实现的目标。因为当i>=0并且i对于循环中的任何正数都不会为负数时,它将进入无限循环(对于1和非1数字的两种情况)。因为1案例在循环中,所以它打印该语句 此外,即使您纠正了循环,它仍然会执行 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextI
i>=0
并且i
对于循环中的任何正数都不会为负数时,它将进入无限循环(对于1和非1数字的两种情况)。因为1案例在循环中,所以它打印该语句
此外,即使您纠正了循环,它仍然会执行
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for(int i = n; i >= 0; i = n / 10)
{
i = i % 10;
if(i == 1)
System.out.print("Has 1");
n /= 10;
}
System.out.print("Has No 1");
}
不管给定的数字中是否有一个
您需要将此代码更新为以下内容
System.out.print("Has No 1");
希望这有帮助帮助器方法使其易于使用:
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
boolean hasOne = false;
int rem;
for(int i = n; i > 0; i = i / 10)
{
rem = i % 10;
if(rem == 1)
hasOne = true;
}
if(hasOne){
System.out.println("Has 1");
}else{
System.out.println("Has No 1");
}
试验
输出
你试过调试吗?
private static String hasDigit(int n, int digit) {
for (int i = n; i > 0; i /= 10)
if (i % 10 == digit)
return "Has " + digit;
return "Has No " + digit;
}
System.out.println(hasDigit(13579, 1));
System.out.println(hasDigit(24680, 1));
System.out.println(hasDigit(13579, 2));
System.out.println(hasDigit(24680, 2));
Has 1
Has No 1
Has No 2
Has 2