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

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

新規登録して質問してみよう
ただいま回答率
85.49%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

2回答

3966閲覧

javaで数字と文字を一列で入力した文字列を数値と文字に分けて配列に格納して成績表を作りたいです

gappy

総合スコア0

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/07/16 08:45

編集2020/07/16 10:43

public

1 2 public static void main(String[] args) { 3 // TODO 自動生成されたメソッド・スタブ 4 double a, b, c =0; 5 String str = "taro 100 hanako 90 jiro 75"; 6 String[] score = str.split(" "); 7 8 a = Double.parseDouble(score[1]); 9 b = Double.parseDouble(score[3]); 10 c = Double.parseDouble(score[5]); 11 String [] name = {score[0], score[2], score[4]}; 12 Double [] scores = {a, b, c}; 13 14 15コード 16```### 前提・実現したいこと 17 18ここに質問の内容を詳しく書いてください。 19 20javaで、 21太郎 100 花子 90 次郎 75 22のように一列で名前と点数を入力して配列を用いて平均点、点数、偏差値を表示する下のようなプログラムが書きたいのですが、最初の文字と数値の混ざったデータを配列に格納する方法が分かりません。splitで分割するのだろうという予測は立つのですが、今までは要素を一つ一つすべて分割する方法しか使ってこなかったので、どう配列につなげていけばいいのか分かりません。java初心者なので本当に初歩的なところでつまずいてしまっています。 23 24一応できる範囲で途中までコードは描いてみたのですが、本当にただ格納しただけのようになってしまっています。 25 26public class hyou { 27 28 public static void main(String[] args) { 29 // TODO 自動生成されたメソッド・スタブ 30 double a, b, c =0; 31 String str = "taro 100 hanako 90 jiro 75"; 32 String[] score = str.split(" "); 33 34 a = Double.parseDouble(score[1]); 35 b = Double.parseDouble(score[3]); 36 c = Double.parseDouble(score[5]); 37 String [] name = {score[0], score[2], score[4]}; 38 Double [] scores = {a, b, c}; 39 40さらにその後の方向性もよろしければご教授いただきたいです。よろしくお願いいたします。 41 42 43 44平均点  88.3 45       太郎 花子 次郎 46点      100 90  75 47標準偏差   ~ ~ ~

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

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

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

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

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

dodox86

2020/07/16 08:56

まず、"太郎 100 花子 90 次郎 75"の行データがあるとして、単語の間の空白文字(全角空白文字になっていますがだいじょうぶですか?)を区切りとしてひとつづつ分割するJavaのコードは書けますか? 多分、それが出発点だと思いますし、それができないとなると「ゼロから教えて(イコール丸投げ)」と言うようなかたちになってしまいます。
gappy

2020/07/16 09:07 編集

丸投げのような質問をしてしまい申し訳ありません。 半角の空白で一つ一つ分割することでしたら、できます。 ただそれをどうやって配列につなげていくのかが分かりません。
dodox86

2020/07/16 09:09

例えばString.splitはそれだけで返り値としてString[]配列を得られます。 https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#split-java.lang.String- まずはできるところまでのコードをがんばってご自分で書いて、質問文に修正、追記しましょう。そうすることで「どこが分からないのか」回答者にも判断が付きやすくなります。丸投げと判断されるだけで回答は付きづらくなります。
退会済みユーザー

退会済みユーザー

2020/07/16 09:32 編集

外国人から日本人に代わってますが、またですか?
gappy

2020/07/16 10:39

dodox86様 おっしゃる通りです。ただ、訂正であげたように全部ばらばらにするしか方法が分かりません…。 asahina1979様 同様の質問があったのでしょうか?参考にしたいので、よろしければどのようなタイトルだったか教えていただけないでしょうか?
guest

回答2

0

Java

1class Test { 2 public static void main(String[] args) { 3 String str = "taro 100 hanako 90 jiro 75"; 4 String[] s = str.split(" "); 5 int n = s.length / 2; 6 String[] names = new String[n]; 7 double[] scores = new double[n]; 8 for (int i = 0, j = 0; i < n; i++) { 9 names[i] = s[j++]; 10 scores[i] = Double.valueOf(s[j++]); 11 } 12 for (int i = 0; i < n; i++) 13 System.out.println(names[i] + ": " + scores[i]); 14 } 15}

投稿2020/07/16 14:45

kazuma-s

総合スコア8224

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

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

0

参考用にコードを書いてみました。
使えそうなところだけ拾って使ってください。

java

1import java.util.HashMap; 2import java.util.Map; 3 4public class tt278188 { 5 6 public static void main(String[] args) { 7 String input = "太郎 100 花子 90 次郎 75"; 8 9 // 解釈しやすいように区切り文字を半角スペースで統一 10 input = input.replaceAll(" ", " "); 11 12 String[] stringArray = input.split(" "); 13 14 Map<String, Integer> scoreMap = new HashMap<String, Integer>(); 15 16 // データを解釈する 17 String nowName = ""; // 今解釈してるのが誰か? 18 for (int i = 0; i < stringArray.length; i++) { 19 int dataType = i % 2; // 0 名前 / 1 点数 20 // System.out.println(stringArray[i]); 21 22 if (dataType == 0) { 23 nowName = stringArray[i]; 24 } else if (dataType == 1) { 25 int score = Integer.parseInt(stringArray[i]); 26 scoreMap.put(nowName, score); 27 } else { 28 // ここにはこない 29 } 30 } 31 32 // この時点でscoreMap は {太郎: 100, 花子: 90, 次郎: 75} 33 34 // データ出力 35 String names = "名前 "; 36 String scores = "点数 "; 37 for (String name : scoreMap.keySet()) { 38 // System.out.println(name); 39 40 // 日本語が交じると文字がずれるが本題と関係ないので省略 41 // 参考→ https://qiita.com/gsy0911/items/00876d8c61ce36bd5fba 42 names += String.format("%-6s ", name); 43 scores += String.format("%-6d ", scoreMap.get(name)); 44 } 45 System.out.println(names); 46 System.out.println(scores); 47 48 // 出力 49 // 名前 次郎 太郎 花子 50 // 点数 75 100 90 51 } 52 53}

投稿2020/07/16 14:01

YakumoSaki

総合スコア2027

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問