在 java 中检查输入的问题

problems with checking input in java

标题是骗人的,但是我真的不知道怎么问这个。

我在玩 java。这是我的代码:

package zodiac;

import java.util.Scanner;

public class Zodiac {

   public static void main(String[] args) {
      Scanner username = new Scanner(System.in);
      String uname;

      System.out.println("Please enter your username: ");
      uname = username.nextLine();

      boolean test = (uname.length() <= 3);

      int trip = 0;
      while (trip == 0) {
         trip++;
         if (test) {
            trip = 0;
            System.out.println("Sorry username is too short try again");
            uname = username.next();
         } 
         else {
            System.out.println("Welcome Mr/Mrs: " + uname);
         }
      }
   }
}

我想做的是提示用户输入他们的用户名,一旦他们检查名称是否小于或等于 3 让他们再次输入用户名,如果用户名超过 3 个字符打印欢迎 mr/mrs blablabla

目前,如果用户名超过 3 个字符,它会打印出欢迎消息,但是如果您输入 3 个或更少的字符,它会告诉您再次输入用户名,如果您输入超过 3 个字符的用户名后记它一直告诉用户密码太短。

我该如何解决这个问题。我最近刚开始在大学学习 java 但是我的老师缺乏教学动力所以我不得不上网,谢谢。

在循环中插入 boolean test = (uname.length() <= 3)

您可能需要在代码中考虑两件事:

  • 如果布尔值就足够了,请不要使用整数来停止循环
  • do-while 循环可能更适合您的情况(您不必那样重写代码!

现在回答您的问题:您没有再次检查循环中插入字符串所需的最小长度!这段代码可能会帮助您理解我提到的所有要点:

public static void main(String[] args) {
    Scanner username = new Scanner(System.in);
    String uname;
    System.out.println("Please enter your username: ");

    boolean tooShort = true;
    do {
        uname = username.next();

        if (uname.length() <= 3)
            System.out.println("Sorry username is too short try again");
        else {
            System.out.println("Welcome Mr/Mrs: " + uname);
            tooShort = false;
        }

    } while (tooShort);

    username.close();
}