【问题标题】:How to keep looping through until user has inputted string of valid length?如何继续循环直到用户输入有效长度的字符串?
【发布时间】:2021-03-26 23:26:43
【问题描述】:

我正在尝试编写一个程序,该程序接受用户输入,然后检查它是否等于或小于五个字符。然后如果它满足这个条件,我们就存储名字,否则我们一直询问他们的名字,直到满足条件。

我尝试使用 while 循环执行此操作,但我不知道如何将询问他们姓名的问题纳入其中。请参阅下面的代码:

import java.util.*;

public class Main {
    public static String newName;
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter your name:");
        String name = scanner.nextLine();
        while (name.length() <= 5){
            newName = name;
            break;
        }
       // ELSE PRINT PLEASE INPUT VALID NAME
        System.out.println("Your name is: " + newName);
    }
}

本质上,我想询问用户名并将其存储在另一个变量中,如果并且仅当它小于或等于 5 个字符时。否则我想循环并再次询问他们“输入你的名字”

例如:Jack Smith 有效,但 Jackson Samuel 无效,我真的想做System.out.println("Enter your name:"); 并重复该过程,直到他们输入具有正确字符串长度的名称

如果有人可以在这里帮助我,那就太好了。

谢谢。

【问题讨论】:

  • 你真的需要考虑你的代码的流程,什么时候会发生什么。您如何期望在不实际询问用户姓名的情况下阅读用户的输入 5 次?
  • @SwapnilPadaya Mate 正确读取代码,我正在查看用户在 while 循环中的输入长度
  • 我给了你一个提示,告诉你如何自己解决问题!

标签: java


【解决方案1】:
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name;

        while(true) {
            System.out.println("Enter your name");
            name = scanner.next();

            if(name.length() <= 5) break;
        }
    }
}

【讨论】:

  • 谢谢。我会在哪里打印“错误请重试”并重复?
  • if 之后添加else 并打印您需要的任何内容
  • infinity while-true 循环在这种情况下是一个糟糕的选择
【解决方案2】:
String name = "";
do {
   System.out.println("Enter your name:");
   name = scanner.nextLine();
} while (name.size() > 5)

【讨论】:

    【解决方案3】:

    试试这个

    public class Main {
        public static String newName = null;
        
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            do {
                if (newName == null) {
                   System.out.println("Enter your name (less 6 chars): ");
                } else {
                   System.out.println("Error, please try again: ");
                }
                newName = scanner.nextLine();
            } while (newName.length() > 5);
    
            System.out.println("Your name is: " + newName);
        }
    }
    

    【讨论】:

    • 谢谢。我会在哪里打印“错误,请重试”并重复?
    【解决方案4】:

    在 while 循环中继续询问名称。

    import java.util.*;
    
    
    public class Main {
        public static String newName;
        
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter your name:");
      
    
            String name = scanner.nextLine();
            while (name.length() >= 6){
                System.out.println("Error, try again.");
                System.out.println("Enter your name:");
                name = scanner.nextLine();
            }
            // ELSE PRINT PLEASE INPUT VALID NAME
            System.out.println("Your name is: " + newName);
        }
    }
    

    【讨论】:

    • 谢谢。我会在哪里打印“错误请重试”并重复?
    • 在while循环下,我编辑了代码
    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2017-11-30
    • 2018-07-15
    相关资源
    最近更新 更多