2016-03-24 15 views
1

私はJAVAを初めて使い、特定の問題に苦しんでいるので、答えが見つからないので、良い人にStackOverflowを尋ねることにしました。JAVAの入力の比較と否定的な結果を無視して

私はATMプログラムを構築しようとしています。カードナンバー、ピン、残高などのプロパティを持つオブジェクトの配列(銀行の顧客)を作成しました。ユーザーがATMにログインしようとすると、カード番号を入力する必要があります。

以下のコードでは、クライアントの配列を通過するATMをシミュレートし、一致するものが見つかるまで入力番号を各顧客のすべての既存のカード番号で確認しました。問題は、10桁のクライアントと一致するものが見つかると、「存在しないカード」を10回表示してから成功することです。

私は、プログラムがこれらのすべての不一致を無視し、一致するものが見つかった場合にのみ続行する方法があるかどうか尋ねたいと思っていました。そして、0のマッチが見つかったときにだけ「存在しないカード」を与えてください。

for (i = 0; i < clients.length; i++) { 
     if (input.equals(clients[i].accountnumber)) { 
      System.out.println("Welcome"); 
     } else { 
      System.out.println("Inexistent Card"); 
     } 
    } 

答えて

2

boolean found = false; 
for (i = 0; i < clients.length; i++) { 
    if (input.equals(clients[i].accountnumber)) { 
     System.out.println("Welcome"); 
     found = true; 
     break; 
    } 
} 

、その後foundブール変数を使用することを検討してくださいと言うことはできませんのでclients[0]は、clients[1]があるかもしれない、あなたが探しているものではありませんという理由だけでそれはあなたが何を意味するかだ場合はループの後

if (!found) { 
    System.out.println("Inexistent Card"); 
} 
0

これを達成するための最も簡単な方法:その後

int indexOfMatchingCard = -1; 
for (... { 
    if (match) { 
    indexOfMatchingCard = current index 

、indexOfMatchingCardは> = 0であれば、あなたは確認することができます。それと同時にあなたのカードのどれがマッチしたかを教えてくれます。 でないとがマーカをリセットした場合、後で他のカードが一致していないことがわかりましたら、それをリセットしてください!

一致するインデックスを覚えておく必要がない場合は、単純な真偽値マーカー(falseに一度初期化し、一致するとtrueに変更する)を使用することができます。

1

これはまさにあなたが書いたものです!

もう少し考えてみましょう:すべてのアカウントを検索して必要なものが見つからない限り、アカウントは存在しません。同じ方法でコードを整理する必要があります。あなたは「非存在」はまだ...

+0

は私は知りませんが、私は私、私はif文の他の部分にフォアループから++私を動かしlines-カップルより多くを追加することで、それの後にそれを修正しました別のifステートメントを追加しました。カウンタが配列の長さよりも大きい場合は、存在しない部分を出力します。 –

+0

@AdrianDevder恐ろしいことに聞こえます。 'i ++'はforループに属します。受け入れられた答えは正しいですが、私はそれをあなたに与えたくありませんでした。私はむしろ説明し、あなた自身でそれを理解してもらいたい。 – John3136

関連する問題