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

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

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

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

Q&A

解決済

1回答

522閲覧

JavaのInteger[]からStringへの変換

cantama

総合スコア20

Java

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

1グッド

1クリップ

投稿2022/08/13 22:38

編集2022/08/14 10:57

実現したいこと

JavaでInteger[]からStringへの変換を実現したい

具体的には、inputを複数個受け取るメソッドがあり、受け取ったinputの変換をしたのちにあるオブジェクトに詰めると言ったものです。

その際に変数宣言をせずにソースコードの肥大化を抑えたい目標があります。

下記のソースコードではdataに"12345"というように連結した結果を格納したいです

該当のソースコード

Java

1Integer[] input = {1,2,3,4,5}; 2String data = ""; 3 4for(Integer i : input) data = data + i.toString(); 5System.out.print(data); //"12345"

試したこと

一応、拡張for文でやってみたんですが、複数あると少し使い勝手が悪いです

Arrays.stream(input)なんかも試してみましたが、使いこなせませんでしたのでどなたか知恵を貸していただけないでしょうか

補足情報(FW/ツールのバージョンなど)

Java 17

TN8001👍を押しています

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

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

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

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

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

y_waiwai

2022/08/13 23:12

使い勝手が悪い、とは具体的にどうなればいいんでしょうか
YT0014

2022/08/14 00:05

ご提示いただいたコードは、コンパイルエラーが出ます。 最終行の;漏れはともかく、result()というメソッドは、どのような機能でしょうか? 調べた限りでは、このメソッドに関する情報が見つかりませんでした。
jimbe

2022/08/14 03:07 編集

これは「型変換」という部類では無いと思いますが。 stream やら拡張 for やらを使わなければ出来ているのでしょうか?
swordone

2022/08/14 06:55

input()を消して最後にセミコロン入れれば問題なさそうですが。 何が目標なんです?
xebme

2022/08/14 08:30

>複数あると少し使い勝手が悪いです 何が複数あるのでしょうか?これではダメですか。 StringBuilder b = new StringBuilder(); for (Integer i : input) b.append(i); System.out.println(b);
cantama

2022/08/14 10:41

使い勝手に関しては、inputの種類が増えるたびに変数宣言も増える点があり、受け取ったinputをオブジェクトに詰めるメソッドであるため、引数が5個や10個を考えると好ましくないと思ったのです。 この点に関しては、言葉足らずで申し訳ございません。 result()の記述は書き損じであります。 型変換という言葉を使ったのは、私自身も不適切だと思いました。後ほど訂正をしたいと思います。
jimbe

2022/08/14 12:30

> inputの種類が増えるたびに変数宣言も増える点があり、受け取ったinputをオブジェクトに詰めるメソッドであるため、引数が5個や10個を考えると好ましくないと思ったのです。 どのような想定・状況を説明されているのかのイメージが付かないのですが…。 input 配列の型が Integer 以外になるのであれば当然宣言は必要(変更?追加?)になるのは当たり前に思います。 5 個や 10 個というのが配列のサイズのことであれば、例えば xebme さんコメントのコードをメソッド化すると String method(Integer[] input) { StringBuilder b = new StringBuilder(); for (Integer i : input) b.append(i); return b.toString(); } となるだけで、メソッドの"引数"は配列ただ一つで変わりはないのではないでしょうか。 お考えになっているメソッドというのはどのような種類のデータに対応してどのような結果を返すつもりなのか、 Integer[]{1,2,3,4,5} → String "12345" 以外に具体的なパターンとして提示頂くことは可能でしょうか。
swordone

2022/08/14 13:12

「inputの"種類"」ってなんですか?
cantama

2022/08/14 22:52

すみません。受け取るのはInteger[]のみです。 メソッドにしておくことで問題ありませんでした。 どうもご迷惑おかけしました。
guest

回答1

0

ベストアンサー

Java

1import java.util.Arrays; 2import java.util.List; 3import java.util.stream.Collectors; 4 5public class Main { 6 public static void main(String... args) { 7 { 8 Integer[] input = { 1, 2, 3, 4, 5 }; 9 String data = Arrays.stream(input).map(String::valueOf).collect(Collectors.joining()); 10 System.out.println(data); 11 12 data = String.join("", Arrays.stream(input).map(String::valueOf).toList()); 13 System.out.println(data); 14 15 data = Arrays.toString(input).replaceAll("[\\[, \\]]", ""); 16 System.out.println(data); 17 } 18 { 19 int[] input = { 1, 2, 3, 4, 5 }; 20 String data = Arrays.stream(input).mapToObj(String::valueOf).collect(Collectors.joining()); 21 System.out.println(data); 22 23 data = String.join("", Arrays.stream(input).mapToObj(String::valueOf).toList()); 24 System.out.println(data); 25 26 data = Arrays.toString(input).replaceAll("[\\[, \\]]", ""); 27 System.out.println(data); 28 } 29 { 30 List<Integer> input = List.of(1, 2, 3, 4, 5); 31 String data = input.stream().map(String::valueOf).collect(Collectors.joining()); 32 System.out.println(data); 33 34 data = String.join("", input.stream().map(String::valueOf).toList()); 35 System.out.println(data); 36 37 data = input.toString().replaceAll("[\\[, \\]]", ""); 38 System.out.println(data); 39 } 40 } 41}

投稿2022/08/14 04:21

TN8001

総合スコア9321

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

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

cantama

2022/08/14 22:53

回答ありがとうございます。 大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問