当前位置: 首页 > 知识库问答 >
问题:

使用扫描仪循环时

壤驷康裕
2023-03-14

嗨,我正在编写一个程序,它使用Scanner从用户那里获取输入,然后使用布尔方法检查输入的长度是否不超过六个字符。问题是,如果长度小于六个,我使用了while循环来不断请求输入;但是在第一次错误输入后,如果你插入一串六个字母或更长的字符串,循环仍然会继续。这是程序:

import java.util.Scanner;

public class PasswordChecker{

  public static void main(String[] args) {

    Scanner kbd = new Scanner(System.in);
  String input;


  System.out.println("Enter a password");
  input = kbd.nextLine();

  boolean result = LengthCheck(input);

  LengthCheck(input);
  while(result == false){
   System.out.println("Please enter a minimum password of six characters");
   input = kbd.nextLine();

  }


  System.out.println(input);
  System.out.println(result);


  }//close main

  public static boolean LengthCheck(String input){

    boolean result = false;
    int length = 6;

    if(input.length() >= length){
      result = true;
    }

    return result;
  }//LengthCheck

}//PasswordChecker

谢谢

共有2个答案

江文斌
2023-03-14

你需要检查长度检查()在 while 循环内,试试这个

while(result == false){
        System.out.println("Please enter a minimum password of six characters");
        input = kbd.nextLine();
     ->   result = LengthCheck(input);

    }
璩和璧
2023-03-14

在您的场景中,当密码长度超过六个字符时,您希望退出循环。因此,您需要确保在while语句中检查该条件。

这将为您完成技巧:

while(LengthCheck(input) == false){
    System.out.println("Please enter a minimum password of six characters");
    input = kbd.nextLine();
}

循环将继续循环,直到LengthCheck满意您输入了6位数的密码。

 类似资料:
  • 我有一个简单的Do-While循环,它使用的扫描器功能不正常。代码应该显示一个文本,提示用户输入字符串,用户输入字符串,然后程序再次显示相同的文本,并提示用户输入另一个字符串。 程序所做的是显示正确的消息,用户输入一个字符串,然后提示用户输入一个字符串,但用户输入之前没有文本。用户输入文本后,它就会正常工作。 查看我的代码,我看不出程序有任何理由在不向用户显示文本的情况下提示用户两次输入。

  • 问题内容: boolean z = false; do { try { a = sc.nextInt(); z = true; } catch(Exception e) { } } while(!z); 试试这个。如果您第一次尝试整数,则整数将正确执行。但是,如果您输入错误的文本类型,即使您接下来输入int并跳过将布尔值分配为true的情况,也会变成无限循环。为什么是这样? 问题答案: 您的问题出

  • 从指定范围(0,20)内且为int的用户处获取有效整数的最佳方法是什么。如果他们输入了无效的整数打印输出错误。 我在想这样的事情: 这是正确的还是有更好的方法?

  • 我正在尝试编写使用Scanner类从用户那里获取输入的代码。但是hasNext()、hasNextInt()和hasNextLine()每次都会运行无限循环。

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 问题内容: 我有此方法,并且从控制台(键盘)读取了一个整数序列,并将所有整数添加到ArrayList中,我使用Scanner类读取了这些数字,但是在for循环中不起作用,它抛出“ java.util.NoSuchElementException”。 问题答案: 首先,使用一个扫描仪,而不是每次都重新创建一个扫描仪。此外,您的for循环还会多循环一次。 这对我来说很好,最后列表包含了我输入的所有数字