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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

解決済

ファイルを読み込んで、4行で表されている選手成績それぞれを配列にして格納し、1行でコンソールに表示したい

hedgehogs
hedgehogs

総合スコア15

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

1回答

0リアクション

0クリップ

279閲覧

投稿2022/09/18 14:27

前提

Javaの勉強をしています。
以前、「4行で表されている選手成績を1行でコンソールに表示したい」について回答を頂き一度は解決しました。
しかし、より改善したいと思い、方法を考えているのですが方法がわかりません。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 1行目から4行目にある項目を1個の配列に格納したい。
  • そのうち4行目にある24項目もそれぞれ分割し、要素数27の配列として、1つの配列に入れたい。
  • 4行目の24項目にひとつでも数値がはいってなければ、エラーを表示するなどするようにして、行が1つ抜けているなどの場合に気づけるよう精度を高めたい。

該当のソースコード

メインクラス

java

package baseball; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Challenge5 { private static final String FILE_PATH = "C:\\Users\\user name \\Documents\\workspace-spring-tool-suite-4-4.15.3.RELEASE\\test 1st\\dat\\pro.csv"; public static void main(String[] args) { File file = new File(FILE_PATH); try (FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr);) { List<Pro> pros = new ArrayList<>(); String line; while ((line = br.readLine()) != null) { String[] strs = {line,br.readLine(), br.readLine(), br.readLine() }; // コンストラクタをオーバロードして呼び出し Pro pro = new Pro(strs); pros.add(pro); } for (Pro pro1 : pros) { System.out.println(pro1); } } catch (Exception e) { e.printStackTrace(); } } }

Proクラス

java

package baseball; public class Pro { private String 順位; private String 選手名; private String 球団; private String 打率; //4行目2列目以降の各データ private String 試合; private String 打席; private String 打数; private String 安打; private String 二塁打; private String 三塁打; private String 本塁打; private String 塁打; private String 打点; private String 得点; private String 三振; private String 四球; private String 死球; private String 犠打; private String 犠飛; private String 盗塁; private String 盗塁死; private String 併殺打; private String 出塁率; private String 長打率; private String OPS; private String 得点圏; private String 失策; //読みこんだデータの格納 public Pro(String[] pros) { this.set順位(pros[0]); this.set選手名(pros[1]); this.set球団(pros[2]); this.set打率(pros[3]); //4行目2列目以降のデータ this.set試合(pros[4]); this.set打席(pros[5]); this.set打数(pros[6]); this.set安打(pros[7]); this.set二塁打(pros[8]); this.set三塁打(pros[9]); this.set本塁打(pros[10]); this.set塁打(pros[11]); this.set打点(pros[12]); this.set得点(pros[13]); this.set三振(pros[14]); this.set四球(pros[15]); this.set死球(pros[16]); this.set犠打(pros[17]); this.set犠飛(pros[18]); this.set盗塁(pros[19]); this.set盗塁死(pros[20]); this.set併殺打(pros[21]); this.set出塁率(pros[22]); this.set長打率(pros[23]); this.setOPS(pros[24]); this.set得点圏(pros[25]); this.set失策(pros[26]); } public String get順位() { return 順位; } public void set順位(String 順位) { this.順位 = 順位; } public String get選手名() { return 選手名; } public void set選手名(String 選手名) { this.選手名 = 選手名; } public String get球団() { return 球団; } public void set球団(String 球団) { this.球団 = 球団; } public String get打率() { return 打率; } public void set打率(String 打率) { this.打率 = 打率; } public String get試合() { return 試合; } public void set試合(String 試合) { this.試合 = 試合; } public String get打席() { return 打席; } public void set打席(String 打席) { this.打席 = 打席; } public String get打数() { return 打数; } public void set打数(String 打数) { this.打数 = 打数; } public String get安打() { return 安打; } public void set安打(String 安打) { this.安打 = 安打; } public String get二塁打() { return 二塁打; } public void set二塁打(String 二塁打) { this.二塁打 = 二塁打; } public String get三塁打(){ return 三塁打; } public void set三塁打(String 三塁打) { this.三塁打 = 三塁打; } public String get本塁打(){ return 本塁打; } public void set本塁打(String 本塁打) { this.本塁打 = 本塁打; } public String get塁打(){ return 塁打; } public void set塁打(String 塁打) { this.塁打 = 塁打; } public String get打点(){ return 打点; } public void set打点(String 打点) { this.打点 = 打点; } public String get得点(){ return 得点; } public void set得点(String 得点) { this.得点 = 得点; } public String get三振(){ return 三振; } public void set三振(String 三振) { this.三振 = 三振; } public String get四球(){ return 四球; } public void set四球(String 四球) { this.四球 = 四球; } public String get死球(){ return 死球; } public void set死球(String 死球) { this.死球 = 死球; } public String get犠打(){ return 犠打; } public void set犠打(String 犠打) { this.犠打 = 犠打; } public String get犠飛(){ return 犠飛; } public void set犠飛(String 犠飛) { this.犠飛 = 犠飛; } public String get盗塁(){ return 盗塁; } public void set盗塁(String 盗塁) { this.盗塁 = 盗塁; } public String get盗塁死(){ return 盗塁死; } public void set盗塁死(String 盗塁死) { this.盗塁死 = 盗塁死; } public String get併殺打(){ return 併殺打; } public void set併殺打(String 併殺打) { this.併殺打 = 併殺打; } public String get出塁率(){ return 出塁率; } public void set出塁率(String 出塁率) { this.出塁率 = 出塁率; } public String get長打率(){ return 長打率; } public void set長打率(String 長打率) { this.長打率 = 長打率; } public String getOPS(){ return OPS; } public void setOPS(String OPS) { this.OPS = OPS; } public String get得点圏(){ return 得点圏; } public void set得点圏(String 得点圏) { this.得点圏 = 得点圏; } public String get失策(){ return 失策; } public void set失策(String 失策) { this.失策 = 失策; } //オーバーライド public String toString() { return "順位=" + this.get順位() + ", 選手名=" + this.get選手名() + ", 球団=" + this.get球団() + ", 打率=" + this.get打率() + ", 試合=" + this.get試合() + ", 打席=" + this.get打席() + ", 打数=" + this.get打数() + ", 安打=" + this.get安打() + ", 二塁打=" + this.get二塁打() + ", 三塁打=" + this.get三塁打() + ", 本塁打=" + this.get本塁打() + ", 塁打=" + this.get塁打() + ", 打点=" + this.get打点() + ", 得点=" + this.get得点() + ", 三振=" + this.get三振() + ", 四球=" + this.get四球() + ", 犠打=" + this.get犠打() + ", 犠飛=" + this.get犠飛() + ", 盗塁=" + this.get盗塁() + ", 併殺打=" + this.get併殺打() + ", 出塁率=" + this.get出塁率() + ", 長打率=" + this.get長打率() + ", OPS=" + this.getOPS() + ", 得点圏=" + this.get得点圏() + ", 失策=" + this.get失策() ; } }
1 村上 (ヤ) .340 115 496 394 134 17 0 49 298 120 95 97 97 5 0 0 12 6 5 .476 .756 1.232 .376 12 2 大島 (中) .323 82 367 337 109 11 1 1 125 15 35 42 21 7 2 0 7 3 1 .375 .371 .746 .246 0 3 佐野 (デ) .320 101 438 406 130 26 1 17 209 57 48 44 28 3 0 1 0 1 10 .368 .515 .882 .289 4 4 宮﨑 (デ) .308 93 373 334 103 22 0 9 152 34 39 25 35 2 0 2 0 0 11 .375 .455 .830 .254 5 5 近本 (神) .293 110 485 441 129 14 1 1 148 25 58 50 35 6 3 0 23 5 7 .353 .336 .688 .314 2 6 坂倉 (広) .289 121 505 456 132 17 3 12 191 56 64 72 37 8 0 4 1 1 13 .350 .419 .769 .295 13 7 牧 (デ) .288 103 437 389 112 28 1 22 208 70 55 65 34 8 0 コード

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/18 22:12

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

jimbe

2022/09/18 18:18 編集

大まかに全体が分からないというのでは、丸投げのようになってしまいます。 もっと小さく、こうなると考えてこう書いたがこうだと出来るがこうではこうなってしまう…的な大きさまでやってみては如何でしょうか。 また Pro クラスの構造ですが、多数のデータ一つ々々に変数やアクセサを作るなではなく、 Map のようにまとめて扱える構造を用いる方が良いと思います。
m.ts10806

2022/09/19 05:46

Spring無関係では。
hedgehogs

2022/09/19 17:06

自分の考えを記載せず、丸投げのようになってしまい申し訳ございません。 それにも関わらず、回答いただきありがとうございます。 一点ご質問なのですが、 stage++;としたあとに return canShipping(); の処理順序は、 boolean canShipping() { return stage == 5; } に飛ぶのでしょうか? stage++でswith処理が変わりMapに格納できるまではわかるのですが、その後のreturn canShipping();で飛ぶ処理場所と、処理のされかたがわからず。。
jimbe

2022/09/19 17:24 編集

回答にもコメントが書けますので、個々の回答への質問はそちらにお願いします。 return canShipping() は、canShipping メソッドを呼んでその返り値をそのまま setList メソッドの返り値としています。 boolean a = canShipping(); return a; を纏めることで余計な変数(a)が要らなくなります。 わざわざ stage == 5 をメソッドにしているのは、setList が返している値が何なのかをメソッド名としてコード上に示す( コメントを付けて『return stage == 5; //発送可能か』とするのと同じ)意味や、 isShipped メソッドと合わせて stage の値の意味を表しているつもりです。 きっちりやるなら、 "5" という値が生成段階の最後というのが絶対変わらないとは限らないので、 stage で判断するのではなく発送可不可のフラグ変数を操作する形になるかもしれません。
m.ts10806

2022/09/20 08:12 編集

質問は編集できますので。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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