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

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

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

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

Q&A

解決済

5回答

1311閲覧

java 配列の要素を分別したい。

yasu_abu7

総合スコア12

Java

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

0グッド

0クリップ

投稿2018/10/10 00:56

編集2018/10/10 01:00

java初心者です。
javaのプログラムの勉強を日々切磋琢磨しているところであります。
まず、初めにString型の二次元配列があります。
その配列の中身がこの文字列になります。→("1"、"2"、"3"、"4")
配列の中身は不順となっており、全部で36個あります。
String [][]str = {
{"3","2","4","4","1","2","3","3","1"},
{"1","1","3","2","4","2","1","4","2"},
{"3","1","4","4","1","3","2","4","3"},
{"2","1","4","1","3","3","4","2","2"}
}
という風に入っています。

この文字列を
"1"がn個
"2"がn個
"3"がn個
"4"がn個

と、わかるプログラムはどのように作ればよろしいでしょうか?
わかる方の返答お待ちしています。

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

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

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

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

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

guest

回答5

0

Mapを使うのが便利です。各文字と数字を結び付け、見つけるたびにカウントを1増やしていきます。

java

1Map<String, Integer> map = new HashMap<>(); 2for (String[] strArr : str) { 3 for (String s : strArr) { 4 Integer count = map.get(s); 5 if (count == null) { 6 count = 1; 7 } else { 8 count++; 9 } 10 map.put(s, count); 11 } 12}

内側forの中身は、mergeメソッドを使うと1行で書くこともできます。

java

1Map<String, Integer> map = new HashMap<>(); 2for (String[] strArr : str) { 3 for (String s : strArr) { 4 map.merge(s, 1, Integer::sum); 5 } 6}

また、Streamを使って一気に処理することもできます。

java

1// import static java.util.stream.Collectors.*; 2Map<String, Long> map = Arrays.stream(str) 3 .flatMap(Arrays::stream) 4 .collect(groupingBy(s -> s, counting()));

投稿2018/10/10 01:09

編集2018/10/10 01:11
swordone

総合スコア20651

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

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

yasu_abu7

2018/10/10 01:15

返答ありがとうございます。 Mapにしてcountしてくやり方がわからなかったため、今回勉強してみます。 ご返答ありがとうございました。
swordone

2018/10/10 01:24

基本的な考え方はtkturboさんのものと同じです。 Mapを使えばどんな文字列でもカウントできます。
guest

0

ベストアンサー

String [][]str = { {"3","2","4","4","1","2","3","3","1"}, {"1","1","3","2","4","2","1","4","2"}, {"3","1","4","4","1","3","2","4","3"}, {"2","1","4","1","3","3","4","2","2"} }; int cnt1, cnt2, cnt3, cnt4; for(String[] arr : str){ for(String num : arr){ if("1".equals(num)){ cnt1++; } if("2".equals(num)){ cnt2++; } if("3".equals(num)){ cnt3++; } if("4".equals(num)){ cnt4++; } } } System.out.print("1が" + cnt1 + "個"); // 以下略

投稿2018/10/10 01:05

tkturbo

総合スコア5572

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

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

yasu_abu7

2018/10/10 01:17

返答ありがとうございます。 教えていただいたやり方でうまくcountで文字列を分けることができました。 これからもわからない時に質問しますので、その時もどうぞご返事いただけれたら幸いです。 ご返答ありがとうございました。
guest

0

https://teratail.com/questions/68513
似たような質問があったので参考にどうぞ

投稿2018/10/10 01:01

terrace

総合スコア249

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

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

yasu_abu7

2018/10/10 01:19

返答ありがとうございます。 似たような質問もあるのですね 今後は、似た質問も拝見してから質問したいと思います。 今回のご返答ありがとうございました。
guest

0

Java

1String[][] str = { 2 { "3", "2", "4", "4", "1", "2", "3", "3", "1" }, 3 { "1", "1", "3", "2", "4", "2", "1", "4", "2" }, 4 { "3", "1", "4", "4", "1", "3", "2", "4", "3" }, 5 { "2", "1", "4", "1", "3", "3", "4", "2", "2" } 6}; 7Arrays.stream(str) 8 .flatMap(Arrays::stream) 9 .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) 10 .forEach((target, count) -> System.out.printf("%sが%d個%s", target, count, System.lineSeparator()));

投稿2018/10/10 01:25

root_jp

総合スコア4666

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

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

0

(一例)配列arrayが特定の値hogeを含んでいるかを確認するには。

Java

1String[] array = {"hoge","fuga"}; 2 3if (Arrays.asList(array).contains("hoge")) { 4 System.out.println("hogeを含む"); 5}

参考リンク
【3パターンをサンプル付きで】Java配列の検索方法

回答している間に質問文に追記されていたのか…。

スマートなやり方ではないですが、配列ぐるぐる回してswitch文でカウントさせるとかですかね。

投稿2018/10/10 01:01

編集2018/10/10 01:06
madoka9393

総合スコア992

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

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

yasu_abu7

2018/10/10 01:18

返答ありがとうございます。 サイトまで載せていただきありがとうございます。 switch文で分ける方法もあるのですね! 今後の参考として、勉強します。 今回のご返答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問