验证用户输入的正确语法是什么?

时间:2016-12-19 19:45:59

标签: java arrays loops if-statement for-loop

我的代码使用扫描仪创建一组运动结果,用户以这种格式输入输入"主队:客场球队:主场得分:客场得分" - 每个部分都被拆分为数组中的字符串。我想创建一个错误消息,如果缺少一个部分,例如"错误,主页团队似乎缺失"然而,对于每个相应的部分;

我是初学者,并已试图通过错误我收到(删除此令牌)的量把一个else,如果在for循环的条件,以帮助使这个错误讯息,但是我做错了什么判断< / p>

3 个答案:

答案 0 :(得分:0)

您可以执行一些操作,例如使用if语句检查值。你可以这样说:

if(stringIsEmpty)
{
    print ("Error");
} 
else
{
   /*Keep executing program*/
}

您还可以使用try / catch块。这可能会有所帮助,因为如果一个字符串为null(空),你可以抛出一个空指针异常并按照你想要的方式定义它,如下所示:

try
{
    /*blank string code*/
}catch(NullPointerException e)
{
    System.out.println("Empty strings are not allowed");
}

答案 1 :(得分:0)

此代码将帮助您的程序根据您的问题中的要求验证用户输入,如果用户错过了任何输入,则会向他报告:

 import java.util.Scanner;

 public class Test4 {

public static void ismissing(int i)
{
    switch(i)
    {
      case 0:
      System.out.println("Home team missing");
      break;

      case 1:
      System.out.println("Away team missing");
      break;

      case 2:
      System.out.println("Home score missing");
      break;

      case 3:
      System.out.println("Away score missing");
      break;
    }
}

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);    
    System.out.println("Input as follows; ");    
    System.out.println("Home team : Away team : Home score : Away score");
    String str=scanner.nextLine();

    String array[]=str.split(":");



    for(int i=0;i<array.length;i++)
    {
        if(array[i].equals(" "))
        {
            ismissing(i);
            System.exit(0); //will exit program if something is missing
        }
    }

        System.out.println("Correct Input");

 }

}

答案 2 :(得分:0)

如果您要创建大量游戏,我建议您创建一个@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.changeCityID: // Enter what you would like to do when user clicks on menu item break; } 类,因为这样可以更轻松地管理Game对象,而不是2个字符串和2个整数值。使用Game对象,您还可以使用Game对象的toString方法输出所需的字符串输出。获取用户输入时,我使用的标准是团队名称不能为空,团队分数不能小于0.如果用户输入并清空字符串或无效的整数,那么我们只输出一条消息,指示无效的输入和让用户再试一次,直到他们得到有效的输入。如果要在发生这种情况时退出,可以更改此选项以便在用户输入无效数据时正常退出程序。

我在main中创建了两个方法,一个用于获取有效的String团队名称,另一个用于获取有效的整数得分。再次,如果用户输入无效数据,我们将循环,直到输入有效。

游戏类:

Game

主要

public class Game
{
  String homeTeam = "";
  String awayTeam = "";
  int homeScore = -1;
  int awayScore = -1;

  public Game(String inHomeTeam, int inHomeScore, String inAwayTeam, int inAwayScore)
  {
    super();
    this.homeTeam = inHomeTeam;
    this.awayTeam = inAwayTeam;
    this.homeScore = inHomeScore;
    this.awayScore = inAwayScore;
  }

  @Override
  public String toString()
  {
    return homeTeam + "[" + homeScore + "] | " + awayTeam + "[" + awayScore + "]";
  }

  public String getHomeTeam() {
    return homeTeam;
  }
  public void setHomeTeam(String homeTeam) {
    this.homeTeam = homeTeam;
  }
  public String getAwayTeam() {
    return awayTeam;
  }
  public void setAwayTeam(String awayTeam) {
    this.awayTeam = awayTeam;
  }
  public int getHomeScore() {
    return homeScore;
  }
  public void setHomeScore(int homeScore) {
    this.homeScore = homeScore;
  }
  public int getAwayScore() {
    return awayScore;
  }
  public void setAwayScore(int awayScore) {
    this.awayScore = awayScore;
  }  
}

希望这有帮助!