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

Java 当用户键入';退出';程序应关闭并显示所有以前的输入,java,arrays,string,oop,exit,Java,Arrays,String,Oop,Exit,目标:此程序要求用户输入所需的社保号码,然后验证并确保其格式正确(XXX-XX-XXXX) 如果输入格式正确,则会将输入添加到SSN阵列中。如果格式不正确,程序将显示消息“请使用XXX-XX-XXXX格式” 一旦用户输入SSN,用户只需键入“退出”,程序应显示所有SSN并关闭程序 以下是程序输出的示例: *********************SSN Server Storage******************** Type 'EXIT' a

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

如果输入格式正确,则会将输入添加到SSN阵列中。如果格式不正确,程序将显示消息“请使用XXX-XX-XXXX格式”

一旦用户输入SSN,用户只需键入“退出”,程序应显示所有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                                                                         
问题:当用户键入“退出”时,程序不会显示所有以前的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;
    }        
}
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");      
            }
        }
    }
}
这应该是

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

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

您使用的是
javafx.application.Platform.exit()
方法


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

谢谢您的帮助。我知道我的出路;在while循环中,我该怎么做才能使程序在那里结束,而不返回到要求用户输入他们的SSN号。我是否必须使用do,while?Change
exit()到<代码>中断
返回
if(SSNNumber.equals("EXIT")){