java while语句不能与if一起使用吗?[已结束]

wwtsj6pe  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(175)

十小时前关门了。
Improve this question
我是Java新手,我正在尝试做一个密码/pin系统,如果不正确,while会循环回扫描仪,如果输入正确,我会说"欢迎",但是它不起作用,我不知道如何修复它。

while (pass != newentry) {
                
    if (pass == newentry) {
        System.out.println("welcome");
        break;
    }

    System.out.println("try again");
    type.nextInt();
}

我还尝试使用do-while循环

System.out.println("Input pin to access files");
                
int newentry= type.nextInt();

do {
    System.out.println("Wrong. Try again");
    type.nextInt();
} while (newentry != pass );

img1
img2
我期望它循环回扫描仪,如果pin不正确,并说欢迎,如果pin是正确的。

b5buobof

b5buobof1#

从你的代码中看不出你尝试了什么。下次请提供完整的示例。
要比较字符串,请使用.equals()方法
这里我试着给予你一个函数式的小例子:

public class JustATest {
    private static final String PASSWORD = "Sup3rs3cr3t";

    public static void main(String[] args) {
        try (final Scanner command = new Scanner(System.in)) {
            boolean shouldRetry = true;

            while (shouldRetry) {
                final String enteredPassword = command.nextLine();
                if (PASSWORD.equals(enteredPassword)) {
                    System.out.println("Welcome");
                    shouldRetry = false;
                } else {
                    System.out.println("Your password is wrong");
                }
            }
        }
    }
}
w46czmvw

w46czmvw2#

由于while(pass!=newentry)为true才能进入循环,因此if(pass==newentry)必须为false(IDE实际上应该提示您这一点)。重新考虑您的条件。

9rnv2umw

9rnv2umw3#

问题是if语句在while循环中,而你直到循环结束才让用户写,因此即使用户给出了有效的密码,它也不能进入if语句。
这段代码应该可以完成您所要求的任务:

import java.io.*;

public class Test {
  public static void main(String [] args) throws Exception{
    BufferedReader newentry = new BufferedReader(new InputStreamReader(System.in));
    //This is the password that the user will input    
    String user = null;
    //Set the password that you want here
    String pass = "test1234";
    System.out.println("Enter the password: ");
    while (!pass.equals(user)) {
      //The user enters the password
      user = newentry.readLine();
      
      if (pass.equals(user)) {
          System.out.println("Welcome!");
          break;
      }
      System.out.println("Try again");
    }
  }
}

BufferedReader是获取用户输入所必需的。

相关问题