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

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

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

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

Q&A

解決済

2回答

1988閲覧

取得した配列の値の表示について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2020/08/27 07:37

編集2020/08/27 08:37

他のメソッドから配列で取得した値を表示するときに、
その配列の各データの数字の最後のみを並べたいのですが、どのようなコードになるかわかりません。

ex)受けた値
[13][23][45][78][65][123] → [3][3][5][8][5][3] //1桁目のみを並べたい

java

1private String hairetsuNo(String inData){ 2 3char []ch = inData.toString(); //受けた値 4char []ch01 = new Char[]; //1桁目のみを並べるための配列 5 6return String ch01; 7 8 9}

上記のコードをどのようにしたら1桁目のみを並べるためのメソッドを作成できるか教えて
いただきたいです。

Java

1private String hairetsuNo(String inData){ 2 3//inData"13","23","45","78","65","123"(受けた配列) 4 5 6return "3","3","5","8","5","3" //結果は1桁のみ並べた配列を返したい 7

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

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

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

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

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

maisumakun

2020/08/27 07:39

えっと、inDataも返り値もString型ですが、どのようなデータを受け取り、そして返したいのでしょうか?
maisumakun

2020/08/27 07:40

(「受け取った値」として「[13][23][45][78][65][123]」のように書かれていますが、これは「各文字の文字コード」を表現したものなのでしょうか、それとも1つ1つが文字列なのでしょうか)
dodox86

2020/08/27 07:48

> char []ch = inData.toString(); //受けた値 > 上記のコードをどのようにしたら1桁目のみを並べる そもそもコンパイルエラーが起きるので、変更のしようがないのですが。 また、Stringをchar配列にしたとして、charの値を数値で扱うということでしょうか? やりたいことがちょっと分からないです。
退会済みユーザー

退会済みユーザー

2020/08/27 07:49

すべてString型のデータを受け取り、かえしたいです。 文字コードではなく、一つ一つ文字列です。 ”13”,”23”,”45”,”78”,”65”,”123” すいません、すべて値です。
maisumakun

2020/08/27 07:50

> すいません、すべて値です。 引数も返り値もString(文字列「1つ」)ですが、それをどうハンドリングするのでしょうか?
退会済みユーザー

退会済みユーザー

2020/08/27 08:10

1桁目のみを並べるための配列をさくせいし、returnで呼び出し先のメソッドにかえしたいです。 1桁目のみを並べるための配列のメソッドを作成したいです。
maisumakun

2020/08/27 08:12

> returnで呼び出し先のメソッドにかえしたいです。 返り値はStringとなっていますが、そこにどう詰め込むのでしょうか? (それとも、引数も返り値もString[]とするのが適切、ということでしょうか?)
退会済みユーザー

退会済みユーザー

2020/08/27 08:12

charの値を数値で扱うということでしょうか→ はい、charの値を数値で扱いたいです。
dodox86

2020/08/27 08:13

もしかすると、入力(引数、パラメータ)も出力も、どのようなものが適切かご自身で分かっていないということではありませんか。
momon-ga

2020/08/27 08:15

配列ですか? String kekka = hairetsuNo("[13][23][45][78][65][123]"); // kekka.equals("[3][3][5][8][5][3]") という、Stringでのやりとりをしたいという質問でしょうか?
退会済みユーザー

退会済みユーザー

2020/08/27 08:19

引数はStringで受け取り、メソッド実行により、[3][3][5][8][5][3]一桁のみ並べて、その配列の結果をStringで返したいです。
maisumakun

2020/08/27 08:27

希望する入出力の値を、「Javaのコード上のリテラル(もしくは希望する値を直接生成するコード)として」書いていただけないでしょうか。 (日本語の文章で表現されますと、それをJavaでどう表現するかで解釈の差が生じます)
coco_bauer

2020/08/27 08:30

”13,23,45,78,65,123”というような文字列を受け取るのであれば、split関数を使って[”13”,”23”,”45”,”78”,”65”,”123”]のようは配列(配列A)にする。 結果を入れるための空の配列(配列B)を用意する。 後は、配列Aから順に文字列を取り出し、そこから最後の1文字を取り出して、配列Bに入れていく。という手順でやればどうでしょう?
maisumakun

2020/08/27 08:39

えっと、引数/返り値はStringなのですか、String[]なのですか?
退会済みユーザー

退会済みユーザー

2020/08/27 08:39

String[]をかえしたいです。
momon-ga

2020/08/27 08:41

> (それとも、引数も返り値もString[]とするのが適切、ということでしょうか?) 結局、これってことですかね・・・
dodox86

2020/08/27 08:50

質問文中の追記コードを見て: 出力(返り値)としてString[]を表現するのに「return "3","3","5","8","5","3" 」と書いているので、 入力(引数)のString inDataの値 inData"13","23","45","78","65","123" と同じ表現です。 メソッドのシグネチャとしてはString[] hairetsuNo(String[] inData) が正しいのではないですか?それとも、引数は、質問者さんが配列と思っているだけで、実は"13,23,45,78,65,123" という文字列なのではないですか?(未だにこの点が判然としないです)
coco_bauer

2020/08/27 08:58

関数 hairetsuNo を呼び出しているプログラム例を示してもらうと、詳細が明らかになると思います。 質問にプログラム例を追加できませんか?
guest

回答2

0

配列の各データの数字の最後のみを並べたい

配列の型は何でしょうか?

private String hairetsuNo(String inData)
のことであれば、String型は一つのデータ(オブジェクト)であり、配列ではありません。

char []ch = inData.toString();
toString()メソッドは、オブジェクトの内容をString型にして返すメソッドです。
inDataは、はじめからString型ですので、意味が無いですし、
JAVAでは、C言語のように、char型配列とString型オブジェクトは全くの別物ですで代入は出来ません。
char型配列にするのであれば、toCharArray()メソッドを用います。

その次に問題なのが、

各データの数字

の部分です。各データの数字とは、具体的には何を指しているのでしょうか?
数字なのであれば、char配列に分解した段階で、既にすべて一桁となっています。
数値なのであれば、int型に変換して10の剰余をとることで、一桁分のデータが得られます。

return String ch01;

返す時も、やはり、char型配列とString型オブジェクトは全くの別物ですでそのまま返すことはできません。
この時もまた、返したいのは、数字の文字列なのか、数値のデータなのかを区別して考える必要があります。


配列はchar型にしたいです。

であれば、上に書いた通りです。

数字なのであれば、char配列に分解した段階で、既にすべて一桁となっています。

数値なのであれば、int型に変換して10の剰余をとることで、一桁分のデータが得られます。

→数字です。char配列か、int型に変換して10の剰余をとるコードを書けば1桁のみの配列が作成できるということでしょうか?

数字であれば、char型にした時点で一桁になっています。char型には1桁しか数字を入れることはできませんので。なので後半は不要です。
ただし、受け取ったStringchar[]に変換して、それをそのままStringに再変換して返すとなると、
何もしないのと同じで、特に意味のないメソッドになってしまうように思えますが……。


//inData"13","23","45","78","65","123"(受けた配列)

この通りであれば、inDataは、String[](String配列)でないといけませんが、
引数ではStringとなっています。どちらなのでしょう?


すべてString型のデータを受け取り、かえしたいです。

文字コードではなく、一つ一つ文字列です。
”13”,”23”,”45”,”78”,”65”,”123”
すいません、すべて値です。

String[]をかえしたいです。

なるほど。
それであれば、メソッドの形してはこうなります。
private String[] hairetsuNo(String[] inData)

と…そっちの完成版は既に、kazuma-sさんが書いてますね。

投稿2020/08/27 08:12

編集2020/08/27 11:10
amiya

総合スコア1218

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

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

退会済みユーザー

退会済みユーザー

2020/08/27 08:30

配列はchar型にしたいです。 数字なのであれば、char配列に分解した段階で、既にすべて一桁となっています。 数値なのであれば、int型に変換して10の剰余をとることで、一桁分のデータが得られます。 →数字です。char配列か、int型に変換して10の剰余をとるコードを書けば1桁のみの配列が作成できるということでしょうか?
退会済みユーザー

退会済みユーザー

2020/08/27 13:44

数値なのであれば、int型に変換して10の剰余をとることで、一桁分のデータが得られます。 →int hairetsuNo=inData % 10; ということでしょうか? なぜ%10をすると1桁しか表示されないのかわからないです。char型は1桁しか表示できないということですが、int hairetsuNo=inData % 10;この式で1桁しか表示しないようにできますでしょうか?
amiya

2020/08/27 14:09

そこはプログラミングというより算数の問題になります。 紙の上でよいので、適当な数をいくつも用意して、%10の計算をして、値がどのような変化をするのか、観察してみてください。 charは一桁という話とその話は、まったく別の話です。 「数値」と「数字」の違いについて、しっかりと認識する必要があります。
退会済みユーザー

退会済みユーザー

2020/08/28 06:24

教えていただきありがとうございます!
guest

0

ベストアンサー

メソッド hairetsuNo には、String の配列を渡して、
String の配列を返してもらいたいのですか?
それなら、

Java

1class Test { 2 private String[] hairetsuNo(String[] inData) { 3 int n = inData.length; 4 String[] outData = new String[n]; 5 for (int i = 0; i < n; i++) 6 outData[i] = inData[i].substring(inData[i].length() - 1); 7 return outData; 8 } 9 10 public static void main(String[] args) { 11 Test t = new Test(); 12 13 String[] s1 = { "13", "23", "45", "78", "65", "123" }; 14 for (String s : s1) 15 System.out.print("[" + s + "]"); 16 System.out.print("-> "); 17 18 String[] s2 = t.hairetsuNo(s1); 19 for (String s : s2) 20 System.out.print("[" + s + "]"); 21 System.out.println(); 22 } 23}

これも違うというのなら、hairetsuNo を呼び出す時のデータが分かるように
main メソッドを書いてください。

投稿2020/08/27 10:19

kazuma-s

総合スコア8224

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

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

退会済みユーザー

退会済みユーザー

2020/08/27 13:21

ありがとうございます! outData[i] = inData[i].substring(inData[i].length() - 1); すいませんがわからなくて、どうして-1をしているのでしょうか?
kazuma-s

2020/08/27 14:27 編集

inData[i] が "13" のとき、inData[i].length() は 2 です。 1文字目の inData[i].charAt(0) は '1'、2文字目の inData[i].charAt(1) は '3'。 文字列の文字の位置は 0 から数えるので、最後の文字の位置は「文字列の長さ - 1」です。 最後の「文字」なら indata[i].charAt(1) ですが、 最後の文字の位置から始まる「文字列」なら inData[i].substring(1); です。
kazuma-s

2020/08/27 14:24 編集

substring を使わないやり方もあります。char 1文字から String に変換すればいいのだから、 outData[i] = String.valueOf(inData[i].charAt(inData[i].length() - 1)); または outData[i] = "" + inData[i].charAt(inData[i].length() - 1);
退会済みユーザー

退会済みユーザー

2020/08/27 14:26

outData[i] = String.valueOf(inData[i][inData[i].length() - 1]); または outData[i] = "" + inData[i][inData[i].length() - 1]; →intの場合 outData[i] = int.valueOf(inData[i][inData[i].length() +1]); または outData[i] = "" + inData[i][inData[i].length() +1]; 文字列の文字の位置は 0 から数えるので、最後の文字の位置は「文字列の長さ - 1」です →int の場合は-1ではなく+1となりますか?
kazuma-s

2020/08/27 14:34 編集

すみません。上の私のコメントで、inData[i][inData[i].length() - 1] は間違いで、 inData[i].charAt(inData[i].length() - 1) に修正しました。 →int の場合は-1ではなく+1となりますか? 何が int なのですか? 具体的な例を書いてください。
退会済みユーザー

退会済みユーザー

2020/08/27 14:49

すいません、ちょっと調べてから質問させていただきます。。 あの、Test t = new Test();とありますが、class Testのなかにメインメソッドがあり、Test()を 呼び出して実行していますが、これはclass Testを実行しているということでしょうか?それともどこかで定義されているtest()メソッドを呼び出して実行しているのでしょうか?すいません、わからなく教えていただきたいです。
kazuma-s

2020/08/27 15:10

private String hairetsuNo(String inData) は static メソッドではないので、クラスのインスタンスを new してからでないと呼び出せません。だから、t.hairetsuNo(s1) で呼び出しています。 private static String hairetsuNo(String inData) とすれば、main から hairetsuNo(s1) で呼び出せます。
退会済みユーザー

退会済みユーザー

2020/08/28 06:24

教えていただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問