当用户键入'退出'该程序应关闭并显示以前的所有输入

时间:2015-09-27 02:54:57

标签: java arrays string oop exit

目标:此程序要求用户输入所需数量的社会安全号码,然后验证并确保其格式正确(XXX-XX-XXXX) )。

如果输入的格式正确,它会将输入添加到SSN数组中。如果格式不正确,程序将显示消息"请使用格式XXX-XX-XXXX"。

用户输入完SSN后,用户只需输入" EXIT"程序应显示所有SSN并关闭程序。

以下是程序输出的示例:

*********************SSN Server Storage********************                        
Type 'EXIT' at any moment to close the program                                         
Enter your Social Security Number(XXX-XX-XXXX): 615-23-8689                         
Enter your Social Security Number(XXX-XX-XXXX): Hello                               
Please use the format XXX-XX-XXXX                                                   
Enter your Social Security Number(XXX-XX-XXXX): 951-65-6201                         
Enter your Social Security Number(XXX-XX-XXXX): EXIT                                

The Social Security Numbers you entered are:                                         
615-23-8689                                                                         
951-65-6201                                                                         

问题:当用户输入" EXIT"该程序不会显示所有以前的SSN并在之后关闭。我做错了什么?

子类:

package SSNServerStorage;

public class SSNArray
{
    private String[] SSNNumber;
    private int arrayCount;

    public SSNArray(){
        SSNNumber = new String[300];
        arrayCount = 0;
    }

    public SSNArray(int arraySize){
        SSNNumber = new String[arraySize];
        arrayCount = 0;
    }

    public String[] getSSNNumber(){
        return SSNNumber;
    }

    public int getArrayCount(){
        return arrayCount;
    }

    public boolean validateSSNNumber(String SSNFormat){
        return SSNFormat.matches("\\d{3}-\\d{2}-\\d{4}");
    }

    public String addSSN(String SSNFormat){
        if (validateSSNNumber(SSNFormat)){
            return SSNNumber[arrayCount++] = SSNFormat;
        }else{
            return null;
        }
    }

    @Override
    public String toString(){
        String str = "\nThe Social Security Numbers you entered are:\n";
        for(int x = 0; x < arrayCount; x++)
            str += SSNNumber[x] + "\n";
        return str;
    }        
}

Mainclass:

package SSNServerStorage;
import java.util.Scanner;
import static javafx.application.Platform.exit;

public class SSNArrayTest
{
    public static void main(String[] args)
    {
        SSNArray SSNArrayObject = new SSNArray();
        Scanner input = new Scanner(System.in);

        System.out.println("*********************SSN Server Storage********************");
        System.out.println("Type 'EXIT' at any moment to close the program\n");

        boolean run = true;
        while(run){
            System.out.print("Enter your Social Security Number(XXX-XX-XXXX): ");
            String SSNNumber = input.next();

            if(input.equals("EXIT")){
                System.out.print(SSNArrayObject.toString());
                exit();                
            }else if(SSNArrayObject.validateSSNNumber(SSNNumber)){
                SSNArrayObject.addSSN(SSNNumber);
            }else{
                System.out.println("Please use the format XXX-XX-XXXX");      
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

if(input.equals("EXIT")){

这应该是

if(SSNNumber.equals("EXIT")){

顺便说一下,Java命名约定是变量名始终以小写字母开头。我建议改为命名变量ssnNumber。或者,更好的是,我将input重命名为scanner,然后将SSNNumber重命名为input以更清楚地反映这些变量&#39;目的。

答案 1 :(得分:0)

您正在使用javafx.application.Platform.exit()方法,其中应使用System.exit(int)

此处的建议是,如果输入为run=false,则设置EXIT,您可以在循环外打印SSNArrayObject。下一步是应用程序将自行退出。