2016-11-06 9 views
0

私は値(アカウント配列からアカウント)を削除するためにこのメソッドを書いています。方法の配列から値を削除するには?

public boolean removeAccount(BankAccount accountNumber){ 
     for(int i = accounts.length - 1; i >= 0; i--) { 
      if(accounts[i] == accounts.length+1) { 
       accounts.length; 
} 
return -1 
} 

これは、配列から要素を削除する適切な方法でしょうか?

+0

あなたは引数としてaccountNumberを渡しますが、あなたはそれを使用していませんが、これは目的ですか? – alexbt

+2

'List'を使う... – Reimeus

+1

私は@Reimeusに同意します。また、コードに括弧がない場合は-1を返します(メソッドの戻り値の型はbooleanです)。 – alexbt

答えて

1

要素を削除するために使用しているコードが間違っています。また、Listを使用することをお勧めします。配列から要素を削除した場合、削除された要素の後ろにあるすべての要素のインデックスを-1に変更する必要があります。また、配列には問題が発生する空白の値があります。

コードをリストに更新します。あなたがオブジェクトを比較することはありませんあなたのコードでは

public void removeAccount(BankAccount accountNumber,ArrayList accounts) 
{ 
    int length = accounts.size(); 
    for(int i = 0; i<length; i++) 
    { 
     if(accountNumber.equals(accounts.get(i))) //* 
     { 
      accounts.remove(i); 
      break; 
     } 
    } 
} 
  • - それは、このようなものでなければなりません。あなたは整数とオブジェクトを比較しています。

  • また、ループメソッドの最初の反復でコードに-1が返されます。

  • 各繰り返しでaccounts.lengthを2回呼び出します。私はそれが良い習慣だとは思わない。長さを変数に格納して使用する必要があります。
+0

'ArrayList'の代わりに' ArrayList 'を使うことをお勧めします。生のジェネリック型は奨励されるべきではありません。 – ajb

+0

ありがとうございました。 – denis

関連する問題