Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JAVA : String型配列→int型(配列なし)に変換

前提・実現したいこと

参考書のプログラム(掲示板プログラム)に、下記機能を追加しようと考えています。 
※現在の仕様だと、最新のメッセージ(1件)のみしか、削除できません。

・「削除チェックボックスに複数チェックを入れた場合、 
  パスワードが一致するものは、すべて削除する。」ようにしたい。

発生している問題・エラーメッセージ

以下のように、実装したところ、エラーメッセージが発生しました。

<変更前> 
String delindex = request.getParameter("delIndex");  
int index = Integer.parseInt(delindex); 

<変更後> 
String[] delindex = request.getParametervaluse("delIndex"); //変更後(複数) 
for(int i=0; i < delindex.length; i++){ 
   int index = Integer.parseInt(delindex[i]); 
}

エラー発生箇所:int index = Integer.parseInt(delindex);

for文内は、String型の配列をint型に変換できているのですが、 
for文を使ってしまうと、下記プログラムが動きません。 
 ・bbsManager.DeleteItem(index, password);  
 ・BBSdataBeans側の削除処理 
for文内部のみしか実行されないので、他の方法がありましたら、ご教授ください。 
どのように対処したら良いかわかりません。

下記に、参考書のソースコードを記載します。 
削除の処理自体は、BBSManagerBeansクラス。

ソースコード(1)

////////////// メッセージの削除(サーブレットのソース) ///////////////////

  public void doBBSDelete(HttpServletRequest request, HttpServletResponse  
  response, BBSDataBeans bbsData) 
      throws IOException, ServletException 
  { 
    String delindex = request.getParameter("delIndex");  
    if (delindex == null) { 
      bbsManager.ReadArticles(0, bbsData); 
      return; 
    } 
    int index = Integer.parseInt(delindex); 

    String password = request.getParameter("pwd"); 
    if (password == null) { 
      bbsManager.ReadArticles(0, bbsData); 
      return; 
    }

    *DeleteItemメソッド:インデックスに対応するメッセージを取ってきてパスワードを比較し、 
    同じだった場合に限ってそこをnullで置き換え* 
    bbsManager.DeleteItem(index, password);  
    bbsManager.ReadArticles(0, bbsData); 
  }

ソースコード(2)

//////// メッセージを削除 (BBSManagerBansのソースコード)////////////

  public void DeleteItem(int index, String deleteKey) 
  { 
    BBSItem item; 
    try { 
      item = (BBSItem)bbsItems.get(index); 
    } 
    catch(IndexOutOfBoundsException e) { 
      return; 
    }

    if (item == null) { 
      return; 
    }

    if (deleteKey.compareTo(item.deleteKey) != 0) { 
      return; 
    }

    bbsItems.set(index, null); 
    WriteDataFile(); 
  }

2

回答

3810

閲覧

2件の回答

評価

0

>エラーメッセージが発生しました。
エラーメッセージが「発生」…?

>エラー発生箇所:int index = Integer.parseInt(delindex);
なんで変更前のコード?

>どのように対処したら良いかわかりません。
それを自分で考え、調べないでどうする…。
コードを「書く」だけではだめ。頭を使うことで、初めて勉強になり、力になるんだよ。
自分で何を調べ、何をしてみたのか。それが書けるのなら、再度書き込もう。

もし、単に具体的なコードを知りたいだけなら、ここはそういう掲示板ではない、という回答になる。

評価

0

どこかで見たと思ったら・・・
https://teratail.com/questions/37238

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。