如何在使用java扫描程序类时验证用户的文本输入?

时间:2012-10-31 20:50:46

标签: java validation java.util.scanner

我是编程Java的初学者,正在寻找一些建议。 我创建了一个非常简单的程序/应用程序,要求用户输入命令,然后在用户指定的位置,大小和颜色的图形屏幕上显示基本形状。

我使用过扫描仪类来从键盘输入用户(例如用户类型移动100 150 ,图形屏幕移动到X = 100,Y = 150或类型圈100 以在指定的x,y坐标处显示圆半径100

如果用户输入错误的命令或尝试输入任何内容或随机击键(例如,如果他们拼写错误的命令或没有为命令指定足够的值),我想返回错误消息

目前程序崩溃并且必须重新启动

import java.util.Scanner;


public class Assign1 {


public final static void main(String [] args) {

    System.out.println("Let's draw something on the screen!");

    GraphicsScreen graphics = new GraphicsScreen();

Scanner input = new Scanner(System.in); // used to read the keyboard

    String next;    // stores the next line input
    String[] one;

    do {
        System.out.print("Enter a command (\"stop\") to finish : ");
        System.out.print("Type 'help' for a list of commands ");
        next = input.nextLine();
        one = next.split(" ");

        String command = one[0];

        if(next.contains("help")) {
            System.out.println("Type 'move' followed by an X and Y co-ordinate to move the graphical pointer.");
            System.out.println("Type 'circle' followed by a radius value to output a circle.");
            System.out.println("Type 'line' followed by an X and Y co-ordinate to draw a line.");
            System.out.println("Type 'clear' to reset the graphical canvas.");
        }


        if(next.contains("move")) {

            int x = 0;

            int y = 0;

            x = Integer.parseInt(one[1]);

            y= Integer.parseInt(one[2]);

            graphics.moveTo(x, y);

        } 



        if( command.equalsIgnoreCase("circle")) {


            int radius = 0;


            radius = Integer.parseInt(one[1]);


            graphics.circle(radius);

        } 


        if(command.equalsIgnoreCase("line")) {

            int x = 0;
            int y = 0;

            x = Integer.parseInt(one[1]);

            y= Integer.parseInt(one[2]);

            graphics.lineTo(x,y);

        }


        if(next.contains("clear")) {
            graphics.clear();
        }

    } while ( next.equalsIgnoreCase("stop") == false );

    System.out.println("You have decided to stop entering commands. Program terminated!");

    graphics.close();

我在另一个名为

的文档中拥有了图形屏幕的所有必要代码
graphicscreen.java

我只是在寻找如何验证用户文本输入的建议,以便在输入我的特定命令之外的任何内容时给出错误消息。

我尝试过使用if语句和while循环以及我在各种网页上找到的其他网页但还没有用过。

任何建议都非常感谢。

2 个答案:

答案 0 :(得分:0)

使用nested if-else而不是only if

 if(command1istrue){
  }
else if(command2istrue){

 }
else if(command3istrue){
}
else {
system.out.println("Error you have entered the wrong command");
}

检查here

答案 1 :(得分:0)

使用else ifelse。如果else if条件上方的所有ifelse if条件评估为false,则仅会检查else条件。只有在if以上的所有else iffalse条件评估为if(next.contains("move")) { } else if( command.equalsIgnoreCase("circle")) { } else if(command.equalsIgnoreCase("line")) { } else if(next.contains("clear")) { } else { //input invalid } 时,才能运行{{1}}块。

{{1}}