2015-11-23 2 views
4

Название обманчиво, однако я действительно не знал, как это задавать.проблемы с проверкой ввода в 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 или менее символов, оно сообщит вам ввести имя пользователя снова, и если вы введете имя пользователя с более чем тремя символами послесловия, он продолжает говорить пользователю, что пароль слишком короткий.

Как это исправить. Я только недавно начал изучать java в университете, однако моим учителям не хватает мотивации преподавать, поэтому я должен привести к интернету, спасибо.

+0

Это потому, что вы не обновляете 'test'. – Maroun

+0

Это не спецификация java - она ​​специфична для потока кода, который вы реализовали (и будет иметь тот же эффект на всех других языках). По крайней мере, вам нужно переместить тест внутри цикла while. В противном случае 'test' остается установленным до самой первой проверки, которую вы сделали. –

+0

просто включают 'test = (uname.length() <= 3);' после 'username.next();'. – SomeJavaGuy

ответ

2

Есть две вещи, которые вы можете думать о том, в вашем коде:

  • не использовать целое число, чтобы остановить цикл, если логическое значение будет достаточно
  • петля делать-то время может быть более подходящей для вашего случая (вам не придется переписывать код, что путь

Теперь на ваш вопрос: Вы не проверяете требуемую минимальную длину вставленной строки в своем цикле снова! Этот код может помочь вам понять все упомянутые мною пункты:

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

вставки boolean test = (uname.length() <= 3) в цикле

Смежные вопросы