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

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

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

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

Q&A

解決済

2回答

4983閲覧

Javaで文字列型の引数と文字列型を要素に持つ配列型の設定方法

Mario_11

総合スコア95

Java

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

0グッド

0クリップ

投稿2018/04/05 10:18

編集2018/04/05 10:23

メソッド間の戻り値?の移動はできないのは知っていて = にして実行しようとしたらエラーが出ます、
引数が文字列で戻り値が文字列型を要素に持つ配列型の設定方法を知りたいです。
ちなみにしたのコードは何が間違っているのでしょうか?---

import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class NewServlet7 extends HttpServlet { String[] profile(String[] args){ String[] profile = {"東京都","ID123456","2020/1/2生まれ"}; String[] profile1 = {"北海道","ID987654","2030/1/3生まれ"}; String[] profile2 = {"沖縄県","ID192837","2040/1/4生まれ"}; return profile; } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ String[] returndata1 = profile(String[] args); out.println(returndata1[0]); } } }

エラー部分はString[] returndata1 = profile(String[] args);です。

ちなみに、returnでprofileの文字列型を返したいのですがreturnを複数書いたらエラーになりました、他の方法はありますか?

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

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

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

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

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

guest

回答2

0

String[] returndata1 = profile(String[] args);

argsの実体はどこでしょう。
上記はprofileメソッドの実行結果をreturndata1に格納するコードと思われますが、
メソッドの引数に指定する変数の実体がありません。
String[] argsだけでは、変数名を定義しているだけで、実体(インスタンス)がありません。

また、profileメソッドの返値は、{"東京都","ID123456","2020/1/2生まれ"} だけです。

投稿2018/04/05 10:28

dsuzuki

総合スコア1682

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

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

umyu

2018/04/06 00:32

回答としても正しく、低評価になる意味が分かりませんので、高評価に1票投入致します。
KSwordOfHaste

2018/04/06 10:00

多分マイナスを付けた方は以下の表現にひっかかったのではないでしょうか? 「String[] argsだけでは、変数名を定義しているだけで、実体(インスタンス)がありません。」 この説明を素朴に受け取ると「変数の実体を定義すればよいのかな?」と思う方がいらっしゃるかも知れません。もちろん、 String[] returndata1 = profile(String[] args = {"a","b"}); などとは書けませんね?つまり「関数の実引数を指定する場所に変数の宣言(のような)構文は使えない」とストレートに表現した方がよいという指摘ではないでしょうか?
dsuzuki

2018/04/06 10:11

ご指摘ありがとうございます。回答時の参考にさせていただきます。
KSwordOfHaste

2018/04/06 10:20

回答する方は「質問者に分かり易いように」と意識して書くと思います。自分の場合もそうですが、ときとして詳しい方から見ると「間違った表現にみえてしまう」ような言い回しになることがあると思います。分かり易く、でも正確にって難しいですよね・・・
guest

0

ベストアンサー

Java

1String[] returndata1 = profile(String[] args);

1,間違っている点

The target type of this expression must be a functional interface

ぐーぐる翻訳
この式のターゲット型は、関数インタフェースでなければなりません

関数を呼び出す時に引数に型(String[])を指定できないと思って頂ければ。

2,> 引数が文字列で戻り値が文字列型を要素に持つ配列型

以下のコードは引数に渡された文字列をキーにして検索したい要件があると仮定しています。
ジャグ配列を使った宣言です。対象の要素が多いなら、HashMapHashSetを使うことを検討してくださいな。

Java

1import java.util.Objects; 2 3public class A120519 { 4 5 public static void main(String[] args) { 6 new A120519().lunch(args); 7 } 8 9 private void lunch(String[] args) { 10 String[] returndata1 = profile("ID987654"); 11 System.out.println(returndata1[0]); 12 } 13 14 String[] profile(String key) { 15 Objects.requireNonNull(key); 16 String[][] profile_list = { { "東京都", "ID123456", "2020/1/2生まれ" }, { "北海道", "ID987654", "2030/1/3生まれ" }, 17 { "沖縄県", "ID192837", "2040/1/4生まれ" } }; 18 for (String[] profile : profile_list) { 19 if (key.equals(profile[1])) { 20 return profile; 21 } 22 } 23 return new String[3]; 24 } 25}

全ての、リストを返したい場合は10列めのprofileを変更するのですか?

1,まず、このprofileメソッドの入力と出力を明確にしないと良くないです。
全てのリスト(文字列のジャグ配列)を返すならば、profileメソッドの引数は不要ですし、戻り値の型もStringのジャグ配列型になります。

Java

1 String[][] profile() { 2 String[][] profile_list = { { "東京都", "ID123456", "2020/1/2生まれ" }, { "北海道", "ID987654", "2030/1/3生まれ" }, 3 { "沖縄県", "ID192837", "2040/1/4生まれ" } }; 4 return profile_list; 5 }

2,用語が少し気になったので、記載しておきます。

用語宣言
文字char a= 'a';
文字列String text = "abc";
文字列配列String[] texts = {"abc","def"};
文字列のジャグ配列(多重配列)String[][] texts = {{"abc","def"},{"ghi","def"}};
リスト(アレイリスト)List<String> list = new java.util.ArrayList<>();

3, Objects.requireNonNull(key)の意味と入れる理由を教えてください、自分でも調べたのですがいまいち理解ができなかったので、よろしくお願いします!
まず、二度手間を防ぐために調べたサイトや調べたキーワードを書いてくださいな。そして調べたこの部分が分からないと記載してください。

Objects.requireNonNull(key)は引数keyのnullチェックを行います。Objects.requireNonNull(key)の行をコメントアウトして、profileの引数にnullを渡したらどうなるかを自分で試してみてくださいな。

◇参考情報
Objects#requireNonNull による null チェックのススメ
java.lang
.String

java.util
.ArrayList


参照型が無い状態をnullと言うらしいのですが、[参照型がない状態]が理解できません、もっと分かりやすく出来ますでしょうか?

基礎知識なので、図書館や書籍でJavaの初心者向けの参考書を探されたほうがよいと思いますが。
まず、Java言語の変数の型は基本データ型(プリミティブ型)と参照型の2つに大別されます。
◇参考情報
図で理解するJavaの参照
Stringクラスは参照型に属します。

Java

1String text = null; // ←これ 2String abc = "abc";

投稿2018/04/05 11:17

編集2018/04/06 03:00
umyu

総合スコア5846

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

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

Mario_11

2018/04/05 21:51

理解しやすい解説ありがとうございます。コードの中でひとつ気になった事があります、全ての、リストを返したい場合は10列めのprofileを変更するのですか?
Mario_11

2018/04/05 22:09

もうひとつお願いします!! Objects.requireNonNull(key)の意味と入れる理由を教えてください、自分でも調べたのですがいまいち理解ができなかったので、よろしくお願いします!
Mario_11

2018/04/06 02:25

用語理解しました!! https://www.sejuku.net/blog/19604 null事態が理解できていないです。 参照型が無い状態をnullと言うらしいのですが、[参照型がない状態]が理解できません、もっと分かりやすく出来ますでしょうか?
Mario_11

2018/04/06 09:23

ふんわりと理解できた気がします!!丁寧にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問