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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

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

解決済

csvファイルの行数や列数を表示するプログラムで、実行が完了しないままとなる

soft_cream
soft_cream

総合スコア11

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

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

2回答

0評価

0クリップ

369閲覧

投稿2022/01/29 03:50

編集2022/01/29 14:32

以下のプログラムをコンパイル・実行しました。
コンパイルによりエラーは表示されませんでしたが、
実行については処理が完了しないまま何も表示されなくなりました。
どのような原因が考えられるでしょうか。
プログラムのどこかに無限ループとなっている箇所などがあるのでしょうか。
csvファイルは、1列目にラベルがあり、それ以降の列にデータが入っているとします。
環境はWindowsのコマンドプロンプトです
(追記)
クラスを一つ記述し忘れていました。下に追加しました。

java

import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; import java.util.Arrays; import java.lang.Math; public class CsvDatasetReader { public static void main(String[] args) { Dataset dataset = readDataset("scurve.csv"); System.out.println(dataset.getNumSamples()); System.out.println(dataset.getNumDimensions()); System.out.println(dataset.getLabel(0)); System.out.println(dataset.getFeature(0,2)); System.out.println(dataset.getLabel(499)); System.out.println(dataset.getFeature(499,2)); } public static Dataset readDataset(String filename){ try { String[] lines = Files.readAllLines(Paths.get(filename), StandardCharsets.UTF_8).toArray(new String[0]); int numSamples = 0;        //行数の取得 while (lines != null){ numSamples++; } String[] numD = lines[0].split(","); //列数の取得 int numDimensions = (numD.length - 1); String[] labels = new String[numSamples]; double[][] features = new double[numSamples][numDimensions]; for (int i=0;i<numSamples;i++) { String[] values = lines[i].split(","); labels[i] = values[0]; Arrays.fill(features[i], 0.0); for(int j = 0;j < Math.min(numDimensions,values.length - 1); j++){ features[i][j]=Double.parseDouble(values[1+j]); } } return new Dataset(labels,features); } catch (IOException e){ e.printStackTrace(); return new Dataset(); } } }

java

public class Dataset { private double[][] features; private String[] labels; private int numSamples; private int numDimensions; Dataset() { this.numSamples = -1; this.numDimensions = -1; } Dataset(String[] labels, double[][] features) { this.labels = labels; this.features = features; this.numSamples = features.length; this.numDimensions = features[0].length; } public void updateFeature(int sid, int did, double value) { if (sid >= 0 && sid < numSamples && did >= 0 && did < numDimensions) { this.features[sid][did] = value; } } public void updateLabel(int sid, String label) { if (sid >= 0 && sid < numSamples) { this.labels[sid] = label; } } public double getFeature(int sid, int did) { if (sid >= 0 && sid < numSamples && did >= 0 && did < numDimensions) { return this.features[sid][did]; } return 0; } public String getLabel(int sid) { if (sid >= 0 && sid < numSamples) { return this.labels[sid]; } return ""; } public int getNumSamples() { return this.numSamples; } public int getNumDimensions() { return this.numDimensions; } public boolean isEmpty() { if (this.numSamples <=0 || this.numDimensions <= 0) { return true; } return false; } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/01/29 04:17

デバッガを利用するなり、あちこちにログ替わりの println を入れてみるなりはされていないのでしょうか。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

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