当用户键入 'EXIT' 时,程序应关闭并显示所有先前的输入
When the user types 'EXIT' the program should close and show all previous inputs
Objective: 该程序要求用户输入任意数量的社会安全号码,然后它会验证并确保其格式正确( XXX-XX-XXXX).
如果输入格式正确,它会将输入添加到 SSN 数组中。如果格式不正确,程序将显示消息"Please use the format 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;
}
}
主类:
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(input.equals("EXIT")){
这应该是
if(SSNNumber.equals("EXIT")){
顺便说一下,Java 命名约定是变量名始终以小写字母开头。我建议改为命名您的变量 ssnNumber
。或者,更好的是,我将 input
重命名为 scanner
,然后将 SSNNumber
重命名为 input
,以更清楚地反映这些变量的用途。
您正在使用 javafx.application.Platform.exit()
方法,而应该使用 System.exit(int)。
这里的一个建议是如果输入是 EXIT
则设置 run=false
并且您可以在循环外打印 SSNArrayObject
。下一步是应用程序将自行退出。
Objective: 该程序要求用户输入任意数量的社会安全号码,然后它会验证并确保其格式正确( XXX-XX-XXXX).
如果输入格式正确,它会将输入添加到 SSN 数组中。如果格式不正确,程序将显示消息"Please use the format 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;
}
}
主类:
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(input.equals("EXIT")){
这应该是
if(SSNNumber.equals("EXIT")){
顺便说一下,Java 命名约定是变量名始终以小写字母开头。我建议改为命名您的变量 ssnNumber
。或者,更好的是,我将 input
重命名为 scanner
,然后将 SSNNumber
重命名为 input
,以更清楚地反映这些变量的用途。
您正在使用 javafx.application.Platform.exit()
方法,而应该使用 System.exit(int)。
这里的一个建议是如果输入是 EXIT
则设置 run=false
并且您可以在循环外打印 SSNArrayObject
。下一步是应用程序将自行退出。