在java

时间:2015-11-23 08:31:55

标签: java input while-loop output

标题是欺骗,但我真的不知道如何问这个。

我正在玩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个字符打印欢迎先生/ blablabla先生

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

我该如何解决这个问题。我刚刚开始在大学学习java,但是我的老师缺乏教学的动力所以我必须在互联网上学习,谢谢你。

2 个答案:

答案 0 :(得分:2)

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

  • 如果布尔值足够
  • ,请不要使用整数来停止循环
  • 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();
}

答案 1 :(得分:1)

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