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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

1873閲覧

javaで定義したメソッド(戻り値、引数含む)をdoGet内のメソッドにてメソッドを呼び出す処理をしたいがうまくいかないです。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

2クリップ

投稿2019/03/23 14:47

編集2019/05/08 03:29

java初学者なので粗い質問をご了承下さい。
### 前提・実現したいこと

userProfileというユーザー定義メソッドを作り、引数は数値型

戻り値を文字列の配列で返すやり方と引数のやり方を、メソッド内にて複数の配列を作る方法を知りたいです

またdoGet以下のメソッドにて受け取った配列の表示を for 文で行いたいのですが手詰まりといった感じです。何か良い書き方はありますでしょうか

valueofとintegerでの値と文字列の変換変換を習っております

戻り値:文字列型を要素に持つ配列型

メソッド内で値を要素とする配列(計3つ)を作成し、

また、どの値にも一致しない場合は null を返却したい。
順番に各配列の0番目の値と引数から受け取った数値型の値で比較処理をして
比較して一致した場合、呼び出し元へ一致した配列を返却したい。
※数値型と文字列型を比較する時に型変換をする。

メソッドを作成したら,処理が正しく実装されているか確認するため、
このメソッドを呼び出す処理を記述。
呼び出した後、返却された配列の表示を行って下さい。
・3つある配列の内、1つが表示される処理にしたい。
・返却された配列は反復処理(for)を使用して表示。その際に0番目の要素は表示しない。

3つ作成した配列の値を引数と比較し型変換することに歯が立ちませんご指摘お願いします。

DrqYuto👍を押しています

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

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

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

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

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

jimbe

2019/03/23 16:43

"```" で囲まれた中にはコードのみでお願い致します. また, 最初の "```" の後に書く言語名は, 実際に書き込んだコードの言語を書いて頂けますか.
jimbe

2019/03/23 16:50

数値型→文字列型もしくは文字列型→数値型の変換は, どの方法を習っていらっしゃいますか?
swordone

2019/03/23 16:57

まずそもそも配列の初期化間違ってるからコンパイル通らねえじゃねえかっていう
m.ts10806

2019/03/23 21:41

タイトルと内容がずれてるように思います。もう少し内容に寄せたタイトルにしてください
shinami

2019/03/24 01:30

知りたい事は 1.一致する値を検索する方法が知りたいのでしょうか? 2.1.の方法が知りたいかつ「実現したいこと」通りに行いたい。 3.それとも戻り値を文字列の配列で返すやり方と引数のやりが知りたいのでしょうか? 1.の方法ですと回答者が最適と思う手段で回答しますので目的に対する内容という意味では得られないかもしれません。 2.の方法ですと中々無理があるのではないでしょうか。 >その際に0番目の要素は表示しない。 0番目に入っている"1","技育太郎"の行がヒットする検索をした場合表示しないとは? それとも"1"、"2"の番号の方でしょうか? いずれにしても配列の事、配列の代入方法(初期化)から順を追って説明してもらうか、 配列ではなく単純なintやStringでの引数と戻り値の方法から教えてもらうかのどちらかから知る必要があると思います。 いきなり大きい事をやり何が何だか分からないのではないかと思います。 String[]に入るデータは "1","技育太郎","東京","男","プログラマー"だけで次の"2"や"3"の行は入らず、 データの方のカッコは[]でなく{}だと思うのですがいかがでしょう。
退会済みユーザー

退会済みユーザー

2019/03/24 02:13

jimbe様へ回答ありがとうございます。 valueofとintegerでの値と文字列の変換変換を習っております
退会済みユーザー

退会済みユーザー

2019/03/24 02:32

shinamiさんご指摘ありがとうございます。実現したいのは3の3.それとも戻り値を文字列の配列で返すやり方と引数のやり方が主です。おっしゃる通り配列を見直してコードを書き直して見ます。
退会済みユーザー

退会済みユーザー

2019/03/24 02:43

swordone様ご指摘ありがとうございます。 配列の初期化がおかしいとは、String[] datas = new String[]以下がおかしいということでしょうか? 複数の配列を用いたやり方が全くできていないのでご指摘お願いしたいです。宜しくお願いします。
guest

回答3

0

ベストアンサー

userProfileというユーザー定義メソッドを作り、引数は数値型
戻り値:文字列型を要素に持つ配列型

String[] userProfile(int datas){ : }

で合っていると思います.
出来れば, 引数の変数名は "datas" では無く(配列の番号の指定のようですので) "number" 等のほうが良いかなと思います.


メソッド内で以下の値を要素とする配列(計3つ)を作成し、
値1 ... ["1","技育太郎","東京","男","プログラマー"]
値2 ... ["2","技育花子","北海道","女","システムエンジニア"]
値3 ... ["3","技育三郎","大阪","男","Webエンジニア"]

String[] datas = new String[] {"1","技育太郎","東京","男","プログラマー"}, {"2","技育花子","北海道","女","システムエンジニア"}, {"3","技育三郎","大阪","男","Webエンジニア"}

これは, swordone さんがご指摘の通り, まずコンパイルを通りません. 2次元配列を習っていらっしゃるかどうかというところです.
また, 問題文には「配列(計3つ)を作成」とあります. すなわち,

java

1String[] data1 = {"1","技育太郎","東京","男","プログラマー"}; 2String[] data2 = {"2","技育花子","北海道","女","システムエンジニア"}; 3String[] data3 = {"3","技育三郎","大阪","男","Webエンジニア"};

ではないでしょうか.


順番に各配列の0番目の値と引数から受け取った数値型の値で比較処理をして
比較して一致した場合、呼び出し元へ一致した配列を返却したい。
※数値型と文字列型を比較する時に型変換をする。

3つの配列のそれぞれ 0 番目すなわち"1","2","3"の部分と引数 datas を比較して, 一致したらその配列を返す, 件の中心部分でしょうか.

data1 のみで考えます.
0 番目の値は data1[0] で String 型です. 引数の datas は int 型です.
型変換には2通りあります. String を int にするか, int を String にするか, です.
valueOf を習ったそうですので, String の datda1[0] を int (正確には Integer) に変換します.

Integer.valueOf(data1[0])

です. そして引数と比較します.

Integer.valueOf(data1[0]) == datas

比較して一致したら処理を分岐するので if 文の条件とします

if(Integer.valueOf(data1[0]) == datas){ }

一致した配列, すなわち data1 を返却します.

if(Integer.valueOf(data1[0]) == datas){ return data1; }

これを各配列で順番に行います.

java

1if(Integer.valueOf(data1[0]) == datas){ 2 return data1; 3} 4if(Integer.valueOf(data2[0]) == datas){ 5 return data2; 6} 7if(Integer.valueOf(data3[0]) == datas){ 8 return data3; 9}

さて, お気づきかもしれませんが, 引用を一行飛ばしました.

また、どの値にも一致しない場合は null を返却したい。

null の返却は

java

1return null;

です.
どの値にも一致しなかった場合なので, 3つの if 文の後に記述する必要があります.


という感じで userProfile の中に記述する部分を 3つに分けてみました.
それぞれ左上に "java" と出ている枠内のコードを userProfile の中に順に記述すれば, userProfile は完成すると思います.

投稿2019/03/24 08:11

jimbe

総合スコア12646

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 04:49

細かくご指摘ありがとうございます。doGet以下のメソッドにて受け取った配列の表示を for 文で行いたいのですが手詰まりといった感じです。何か良い書き方はありますでしょうか?
jimbe

2019/03/25 08:31

"より"良い書き方はあるかも知れませんが, 何も無い状態からの'良い書き方'は分かりません. まず nerazzurri さんが習ったことを総動員して書いてみてください. userProfile を呼びだして結果を受け取るコードは, もう書かれたでしょうか. 「配列の各要素を, for 文で表示する」方法は習っていらっしゃいませんか?
退会済みユーザー

退会済みユーザー

2019/03/25 09:25

指摘ありがとうございます。 「配列の各要素を, for 文で表示する」方法←拡張for文は習っております。 for(中身を受け取る変数:配列){ 中身を利用した処理 } これで返却された配列を表示し(その際に0番目の要素は表示しない。)が歯が立たないといった感じです...
退会済みユーザー

退会済みユーザー

2019/03/25 10:26 編集

上記追加です。自分なりに返却側doget内でのメソッドを書いてみましたがうまくいきません。 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out= response.getWriter()){ String[] data1[]=userProfile(); String[] data2[]=userProfile(); String[] data3[]=userProfile(); for (int i=0;i<number.length;i++) { } } } ``` このような感じですご指摘おねがいしたいです。
退会済みユーザー

退会済みユーザー

2019/03/25 10:48

上記のコードを改変です。何度も申し訳ございません。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out= response.getWriter()){ String[] data1=userProfile(1); for (int i=1;i<data1.length;i++) { out.println(data1[i]); } } これで3つある配列のうち一つの配列を表示することができましたが 改善点がありましたらご指摘お願いします。 }
退会済みユーザー

退会済みユーザー

2019/03/25 10:48

上記のコードを改変です。何度も申し訳ございません。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out= response.getWriter()){ String[] data1=userProfile(1); for (int i=1;i<data1.length;i++) { out.println(data1[i]); } } これで3つある配列のうち一つの配列を表示することができましたが 改善点がありましたらご指摘お願いします。 }
退会済みユーザー

退会済みユーザー

2019/03/25 10:48

上記のコードを改変です。何度も申し訳ございません。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out= response.getWriter()){ String[] data1=userProfile(1); for (int i=1;i<data1.length;i++) { out.println(data1[i]); } } これで3つある配列のうち一つの配列を表示することができましたが 改善点がありましたらご指摘お願いします。 }
jimbe

2019/03/25 11:12 編集

あらら、コメントボタンを何度か押されてしまったのでしょうか. > ・3つある配列の内、1つが表示される処理にしたい。 → userProfile(1) > ・返却された配列は反復処理(for)を使用して表示。その際に0番目の要素は表示しない。 → for 文のループカウンタ(i)の開始を 1 とする どちらも達成できているのではないでしょうか^^ 十分「歯が立っている」と思います. この場合の for 文は, 拡張 for 文では返って面倒なことになるので, 普通の for 文が正解だと思います. 強いてご注意点を挙げますと, userProfile(1); の戻りを受け取る変数名を data1 では無く data の方が良いかなと思います. data1 としますと, 「では userProfile(2) を受け取るときは data2 と変えるのかな」的に見えます. まぁこれは深読み過ぎという感じも致しますが.
退会済みユーザー

退会済みユーザー

2019/03/25 11:41

コメントボタン重複失礼しました。 指摘ありがとうございます。 変数名をdataに変えてみます。 長く付き合って頂いたおかげで達成することができました。本当にありがとうございました。
guest

0

jimbeさん等が配列を丁寧に説明されているので、少し難易度の高い話をしましょう。
質問はuserProfileというクラス内にメソッドを作り、引数はint型1つのみ、戻り値はstring型配列
とのことでしたが、返したい値を見ている限りこのような感じが良いのではないかと思いました。

値1 ... ["1","技育太郎","東京","男","プログラマー"]
値2 ... ["2","技育花子","北海道","女","システムエンジニア"]
値3 ... ["3","技育三郎","大阪","男","Webエンジニア"]
型解説 [int型,string型,string型,boolen型,string型]

Java

1class userProfileDatum{ 2 public int Number; 3 public string name; 4 public string address; 5 public boolen distinction;//オカマは存在しないものとする。 6 public string jobName; 7};

上記のようなクラスを新たに生成した方が、設計上の仕様を固めやすいメリットがあり、
外部データを取得してきた時の管理クラスにも応用できるので非常に便利です。
質問にもあったnullでの判定もこちらの方が行い易いです。
それでは引き続き、プログラムの勉強頑張って下さい。

投稿2019/03/25 00:55

stdio

総合スコア3307

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 04:51

ありがとうございます。ご指摘ありがとうございます。これからも精進します。
guest

0

配列については調べ中&書き直し中と思われますので引数と戻り値について

引数

java

1void userProfile(○○○○型 hensu) { 2 //内容 3} 4 5public void mainsyori() { 6 userProfile(○○○○型の変数や定数データそのもの) 7} 8

よって、○○○○は一致する型にしなければなりません。

戻り値

java

1 2○○○○型 userProfile(){ 3 ○○○○ datas; 4 return ○○○○型の変数や定数データそのもの; //datasなど 5} 6 7public void mainsyori() { 8 ○○○○型 hensu; 9 hensu = userProfile(); 10}

よって、○○○○は一致する型にしなければなりません。

質問者さんのソースでは

java

1String[] userProfile(int datas){ //String[]は○、同じ変数名datasがあるのでどちらか変える。 2 String[] datas = new String[] {"1","技育太郎","東京","男","プログラマー"} 3 return datas; //int datasの同じ変数名がなければ○ 4} 5 6protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 7 String[] datas = userProfile(); //userProfile(この中はint型の変数か定数)が無い。 8}

投稿2019/03/24 05:50

編集2019/03/24 05:51
shinami

総合スコア334

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 04:43

戻り値と引数についての解説ありがとうございます。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問