有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用户输入的java验证

我在下面写了这段代码,我想知道是否有可能验证“playername”的代码条目。我需要能够检查用户是否在这个字符串中输入了任何内容,我想知道除了使用中断之外,是否可以以任何方式执行此操作,因为它不在循环中,我不能使用中断。此外,当我从用户那里获取输入时,我使用冒号作为字段分隔符,将用户输入拆分为数组中的单独元素。我想知道是否有办法检查用户是否使用了正确的字段分隔符

import java.util.Scanner;

public class REQ2 {

    public static void main (String[] args) {
        String playername;       
        String line;
        String[] list = new String[100];
        int count = 0;  
        int score;
        int time;
        int totalScore =0;

        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter your name");

        playername = sc.nextLine();

        System.out.println("Please enter your game achievements (Game name:score:time played) E.g. Minecraft:14:2332");

        while (count < 100) { 
            line = sc.nextLine();

            if(line.equals("quit")) {
                 break;
            }

            list[count]=line;
            System.out.println("list[count]" + list[count]);
            count++;

            for (int i = 0; i < count; i++) {
                line = list[i];
                String[] elements = line.split(":");    
                if (line.length() != 3) {
                    System.out.println("Error please try again, Please enter in the following format: game name:score:timeplayed");
                    break;
                }
                score = Integer.parseInt(elements[1].trim());            
                time=Integer.parseInt(elements[2].trim());
            }
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    playername = sc.nextLine();之后使用此代码

     while(playername.equals(""))
     {
         playername = sc.nextLine();
     }
    

    在变量playername有一个非空的值字符串之前,这不会让程序继续

    编辑

    如果你想在没有输入任何内容的情况下退出程序,请使用

     if(playername.equals(""))
     {
         System.exit(0);
     }
    

    编辑2

    至于检查字符串中是否使用了:,请尝试在line = sc.nextLine();之后添加此代码。(记住要使用它,您必须调用Java文件顶部的这行代码import java.util.regex.*;

    Pattern pattern = Pattern.compile(":");
    Matcher  matcher = pattern.matcher(line);
    
    int patternMatch = 0;
    while (matcher.find())
    {
        patternMatch++;
    }
    
    while(patternMatch!=2)
    {
        patternMatch=0;
    
        line = sc.nextLine();
    
        if(line.equals("quit")){
            break;
        }
    
        Pattern pattern = Pattern.compile(":");
        Matcher  matcher = pattern.matcher(line);
    
        while (matcher.find())
        {
            patternMatch++;
        }
    }