シリアル番号を特定の形式で入力するようにプログラムを作成しようとしていて、コードが有効かどうかを確認します。Java - ユーザーのシリアルコード形式が有効かどうかを確認するプログラム
フォーマットは2つの数字の後にダッシュ、4つの数字、1つのドット、4つの数字、2つの文字(注:a、b、cのみです)を指定します。有効な形式の
例:
31-0001.2341ac
00-9999.0001cb
文字列の長さは、形式よりも長い/短い場合(14文字の長さを合計)は無効表示されるはずです。同じこと、他の文字が使用されている場合、無効とも言われます。
これまでに行ったコードです。正確な指定された形式をどのように達成できるかはわかりません。誰かが助けてくれることを願っています。
import java.util.Scanner;
public class SerialCheck{
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("How many serial numbers would you like to check: ");
int length = sc.nextInt();
int valid = 0;
String[] sSerials = new String[length];
for (int nCtr = 0; nCtr < length; nCtr++){
System.out.print ("Enter Serial " + (nCtr+1) + ": ");
sSerials[nCtr] = sc.next();
}
System.out.println();
System.out.println("The following were added: ");
for(int nCtr = 0; nCtr < length; nCtr++){
System.out.println(sSerials[nCtr]);
}
System.out.println();
for(int nCtr = 0; nCtr < length; nCtr++){
for (int x = 0; x < sSerials[nCtr].length(); x++){
char c = sSerials[nCtr].charAt(x);
if((sSerials[nCtr].charAt(x)!='a') ||
(sSerials[nCtr].charAt(x)!='b') ||
(sSerials[nCtr].charAt(x)!='c') ||
(sSerials[nCtr].charAt(x)!='-') ||
(sSerials[nCtr].charAt(x)!='.')){
valid--;
}
else{
valid++;
}
}
if (valid < 0 && sSerials[nCtr].length() != 14){
System.out.println("The address is invalid.");
}
else{
System.out.println("The address is valid.");
}
}
}
}
ありがとうございます! :)ちょうどフォローアップの質問。正規表現を使用して文字列形式で文字を追加することもできますか? ユーザのシリアルコードは、プログラムの長さが短いため無効と判断されたので、プログラムはシリアルを有効にするために必要な長さに先行ゼロを付加します。 – Andrew
例:入力:32-1234.4abは32-1234.0004abに変換され、長さが0になります。 – Andrew
いくつかのタイプの置換は可能ですが、そうではありません。 str.substring(0、8)+ "0000" .substring(0,14-str.length())+ str.substring(8) 'のように、' substring'を使うほうがずっと簡単です。申し訳ありませんが、数字をチェックしていませんが、うまくいけばあなたに正しいアイデアが与えられます。 –