2017-08-22 5 views
-1

ユーザーが16桁の文字列を入力する必要があるif文を作成したい場合、失敗した場合は再試行する必要があります。私はC++でこれをやったことがありますが、javaでこれを行う方法はわかりません。これはこれまでの私のコードです。私はまた、カード番号のようなこのフォーマット「xxxx xxxx xxxx xxxx」でカード番号を保存したい。私はちょうどその形式でそれを返すべきですか?Java - 余分な入力を許容する文字列入力エラー

public PersonalAccount(String user_firstName, String user_lastName, String user_accountNumber, String street, String town, String postcode, String user_cardNumber, char user_cardType) { 
    super(user_firstName, user_lastName, user_accountNumber, street, town, postcode); 

    if (user_cardNumber.length() == 16) {  
     cardNumber = user_cardNumber; 
    } else { 
     System.out.println("Incorrect card number length"); 
    } 

    cardType = user_cardType; 
} 
+0

すべての共有のコードがやっているが、長さの制約のためにチェックしています。あなたの需要リストからのもの以外は何もありません。 – nullpointer

+0

えええええええええええええええええええええええええええええっしゃえんさんありがとうございました – Dave

+1

このコードは混乱しています。スーパークラスとは何ですか?ユーザーはこのコードとどのように対話しますか?いくつかの 'Scanner'クラスを通してですか?そして、ある種のwhileループを考えるかもしれません。あなたが提供したものを見てみるのは難しいです。 – Pijotrek

答えて

0

呼び出し側は例外をキャッチし、それに基づいて行動でき、この方法で...ではなく、コンソールにエラーメッセージを印刷する

を例外(EG IllegalArgumentException)をスローする必要があります。あなたが好きな方法を使用することができます

public String formatCardNumber(String cardNumber) 
{ 
    StringBuilder sb = new StringBuilder(20); 
    for (int i = 0; i < 16; i+=4) 
    { 
     sb.append(' ').append(user_cardNumber, i, i + 4); 
    } 
    return sb.substring(1); 
} 
+0

を変更するつもりですか?と答える? – nullpointer

+0

オペレータは、正しくない場合、再入力値を要求します。これはコンストラクタです。だから、例外をスローし、コンストラクタの呼び出し元で例外を処理する明白な解決策は、EG再入力値が正しくない... –

+0

これはどのようにコードで動作しますか?どのようにしてユーザーに再入力させることができるのでしょうか。 – Dave

0

:あなたは、文字列をフォーマットしたい場合はフォーマットについては

は、それはあなたがこのような何かを試してみてください、それぞれ4桁の数字の後にスペースを持つように、スペースを空けずに

  • が例外をスロー16桁の数字が入力された場合

    1. チェックするために、これは、入力が正しくない
    2. リターンがあることを示します書式が正しい場合は、4桁ごとに空白を含む値を入力します。

      String checkCardnumber(String user_cardNumber) { 
          if(!user_cardNumber.matches("[\\d]{16}")) { 
          throw new IllegalArgumentException(); 
          } else { 
          return user_cardNumber.replaceAll("([\\d]{4})([\\d]{4})([\\d]{4})([\\d]{4})", "$1 $2 $3 $4"); 
          } 
      } 
      
  • +0

    これをCardNumberにこの形式で保存したいのですが、それは可能ですか? – Dave

    +0

    セーブでどういう意味ですか?任意の文字列に格納できます。 – JensS

    関連する問題