質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

669閲覧

JAVA 引数が文字列型 戻り値が文字列型を要素に持つ配列型の処理方法

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/06/14 06:42

編集2018/06/14 13:13

JAVAの引数と戻り値を勉強している者です。
今つまずいてしまっており、ご教授して頂きたいです。

ユーザー定義メソッドを作成したいのですが、
配列を作成して、メソッドも定義してみたのですが、呼び出し側の部分がエラーになってしまっていて、どうすれば良いのか、色々調べたのですがよく分からず困っています。
メソッドの定義部分も間違っているのでしょうか?

以下詳細記します、、、
〇環境状態:Windows, NetBeans IDE8.2のサーブレット使用して作成しています。

<引数>
文字列型 String

<戻り値>
文字列型を要素に持つ配列型 String[]

<処理内容>
①3プロフィールを、3人分それぞれの配列で作成する。
→二次元配列で作成しました。

②引数として受け取ったIDの値と同じIDを持つ配列を、戻り値として返す。
→この部分の処理がどうすれば良いのか分からず、条件分岐を記し、returnしています。

④メソッドを呼び出し、その戻り値に格納された要素をそれぞれ表示する。
表示する要素は反復処理によって順番に指定して、IDの値は表示しない。
→この部分で「変数が見つかりません」とエラーになってしまいます。

java

1 2import java.io.IOException; 3import java.io.PrintWriter; 4import javax.servlet.ServletException; 5import javax.servlet.http.HttpServlet; 6import javax.servlet.http.HttpServletRequest; 7import javax.servlet.http.HttpServletResponse; 8 9/** 10 * 11 * @author ani 12 */ 13public class challenge1 extends HttpServlet { 14 /** 15 * Processes requests for both HTTP <code>GET</code> and <code>POST</code> 16 * methods. 17 * 18 * @param request servlet request 19 * @param response servlet response 20 * @throws ServletException if a servlet-specific error occurs 21 * @throws IOException if an I/O error occurs 22 */ 23 24 String[] profile(String key){ 25 String [][] profile_list={ 26 {"ID:123456","1989/1/30生まれ","東京都"}, 27 {"ID:987654","2015/5/6生まれ","青森県"}, 28 {"ID:716606","2030/6/8生まれ","香川県"} }; 29 30 for(String[] p: profile_list){ 31 if(p[0].equals(key))return p;} 32 33 return null; 34 } 35 36 protected void processRequest(HttpServletRequest request, HttpServletResponse response) 37 throws ServletException, IOException { 38 response.setContentType("text/html;charset=UTF-8"); 39 try (PrintWriter out = response.getWriter()) { 40 /* TODO output your page here. You may use following sample code. */ 41 out.println("<!DOCTYPE html>"); 42 out.println("<html>"); 43 out.println("<head>"); 44 out.println("<title>Servlet kadai</title>"); 45 out.println("</head>"); 46 out.println("<body>"); 47 48 String[] p= profile("ID:123456"); 49        for(int i=0; i<p.length; i++){ 50 out.print("【1】①"+p[1]+"②住所:"+p[2]); 51 out.print("<br>");} 52 53 54 String[] m= profile("ID:987654"); 55 for(int i=0; i<m.length; i++){ 56 out.print("【2】①"+m[1]+"②住所:"+m[2]); 57 out.print("<br>"); } 58 59 String[] n= profile("ID:716606"); 60 for(int i=0; i<n.length; i++){ 61 out.print("【3】①"+n[1]+"②住所:"+n[2]); 62 } 63 64 out.println("</body>"); 65 out.println("</html>"); 66 } 67 } 68 69 // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 70 /** 71 * Handles the HTTP <code>GET</code> method. 72 * 73 * @param request servlet request 74 * @param response servlet response 75 * @throws ServletException if a servlet-specific error occurs 76 * @throws IOException if an I/O error occurs 77 */ 78 @Override 79 protected void doGet(HttpServletRequest request, HttpServletResponse response) 80 throws ServletException, IOException { 81 processRequest(request, response); 82 } 83 84 /** 85 * Handles the HTTP <code>POST</code> method. 86 * 87 * @param request servlet request 88 * @param response servlet response 89 * @throws ServletException if a servlet-specific error occurs 90 * @throws IOException if an I/O error occurs 91 */ 92@Override 93 protected void doPost(HttpServletRequest request, HttpServletResponse response) 94 throws ServletException, IOException { 95 processRequest(request, response); 96 } 97 98 /** 99 * Returns a short description of the servlet. 100 * 101 * @return a String containing servlet description 102 */ 103 @Override 104 public String getServletInfo() { 105 return "Short description"; 106 }// </editor-fold> 107 }

コンパイルエラーになってしまいます。どこが間違っているのでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/06/14 06:47

引数のKeyは配列内のIDが渡ってくるわけではないのでしょうか。
m.ts10806

2018/06/14 06:48

profile() の呼び出し元も記載してください。
退会済みユーザー

退会済みユーザー

2018/06/14 12:11 編集

profile()呼び出し
guest

回答1

0

profile_listはprofileメソッドの中で宣言されたローカル変数なので、このメソッドの外からは使えません。

java

1String[] p = profile("ID:123456");

のようにしてprofileメソッドを呼び出して、その結果を変数に置いておき、

java

1out.print(p[1] + " " + p[2]);

などのように表示する必要があるのでは?

なお、profileメソッドの返り値の決定もループでできます。

java

1String[] profile(String key){ 2 String [][] profile_list={ 3 {"ID:123456","1989/1/30生まれ","東京都"}, 4 {"ID:987654","2015/5/6生まれ","青森県"}, 5 {"ID:716606","2030/6/8生まれ","香川県"} }; 6 7 for (String[] p : profile_list) { 8 if(p[0].equals(key)) return p; 9 } 10 return null; //見つからなかった 11}

投稿2018/06/14 06:55

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/14 12:11 編集

退会済みユーザー

退会済みユーザー

2018/06/14 12:19

回答して頂きありがとうございます。 基礎的な質問で申し訳ないのですが、String[]p=profile("ID:123456")でメソッドを呼び出す部分は、protected void ProcessRequestの下の<body>と</body>の間に入力すればよいのでしょうか? また、その場合そのあとのout.print()での表示処理で、エラーになってしまうのですが、何が間違っているのでしょうか? 何度も質問してしまい申し訳ございませんよろしくお願い致します。
swordone

2018/06/14 13:00

どのようなコードにしたのか、またその結果どのようなエラーが出たのか、質問を編集して提示してください。
退会済みユーザー

退会済みユーザー

2018/06/14 13:16

特に赤線もなくエラーもなかったのですが、実行時にコンパイルエラーになってしまいます。どこが間違っているのでしょうか?質問のコード部分編集しました。
swordone

2018/06/14 13:19

コンパイルエラーならそもそも実行できません。コンパイルエラーではなく例外の発生です。 例外のログが出ているはずですのでそれを掲載してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問