Java 给定正整数n,打印“;有1”;如果包含1位数字,则打印“;没有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

它使用“has1”,但当没有数字1时,它不会打印任何内容。缺少什么?

当前代码的逻辑无法实现您希望实现的目标。因为当
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