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

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

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

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

3回答

4470閲覧

Javaでテキストファイルに書かれている数字のみを取出し、計算するコードを教えてほしいです。

yyhsxhxh

総合スコア13

Java

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2018/11/08 03:19

編集2018/11/09 01:22

前提・実現したいこと

緊急でございます。
Javaのプログラムで、
支出を記録したファイル, kaikei.txtを読み込み、1日・2日・3日それぞれの支出額の合計を計算するプログラムを作りたいのですが、途中から作り方がわからなくなってしまいました。
ファイルに書かれている文章のコロン(:)以降をまず、Stringで取り出して、
そのあとintに変換して計算というコードが良いかなと思っているのですが、メゾットがわからずどうつくっていいかわからなくなってしまいました。
完成したプログラムを教えていただけますと幸いです。
Kaikei.txtのファイルの内容は以下のとおりです。
2日,雑貨品:150
1日,ごはん:320
1日,運賃:550
3日,ごはん:220
2日,運賃:610
3日,運賃:480
3日,病院:800
3日,ファッション:1200
1日,雑貨品:200

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

import java.io.*; import java.lang.*; public class Kaikei { public static void main(String[] args) { public class CopyFile { public static void main(String[] args) { try { int i,day1,day2,day3; String line,; System.out.println FileReader fr = new FileReader("kaikei.txt"); BufferedReader br = new BufferedReader(fr); while (br.ready()) { //特定した行の文字を取り込みたい line = br.readLine(); num= line.substring(0, 0+1) num= line.substring(0, 0+1) if(line.indexOf(1)==1, ) day1= line.substring(0, 0+1)     day2= line.substring(7, 10+1) } br.close();    fr.close(); System.out.println("。"); } catch (IOException e) {   System.out.println("標準入力において例外が発生しました。"); } } } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/11/08 04:02

打ち間違いだとは思いますが、メゾットではなく、メソッドです。桜の人かな…?
mather

2018/11/08 04:23

「完成したプログラムを教えていただけますと幸いです。」は丸投げの質問になってしまいます。回答にあるヒントを使ってできる限り自力で解くようにしましょう。
guest

回答3

0

ファイルに書かれている文章のコロン(:)以降をまず、Stringで取り出して、

Stringクラスのsplit()を使いましょう。

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#split-java.lang.String-

intに変換して

IntegerクラスのparseInt()を使いましょう。

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-

投稿2018/11/08 03:32

dice142

総合スコア5158

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

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

yyhsxhxh

2018/11/08 05:15

ご回答ありがとうございます。 ご丁寧にリンクまでありがとうございます・・・!! メソッドを使ってみたのですが、以下のようにエラーが出てしまい実行することができませんでした。 どう対処すればよいか困っております。。 import java.io.*; import java.lang.*; public class Kadai24 { public static void main(String[] args) { try { int i,day1,day2,day3,num1,num2; String line,line1,line2; day1=0; day2=0; day3=0; FileReader fr = new FileReader("Shopping.txt"); BufferedReader br = new BufferedReader(fr); while (br.ready()) { //特定した行の文字を取り込みたい line = br.readLine(); line1= line.substring(0, 0+1);  num1= Integer.parseInt(line1); line2 = line.split(":", 0); //エラー個所 num2= Integer.parseInt(line2); if(num1 == 1){day1=day1+num2;}{if(num1==2){day2=2+num2;}{day3=day3+num2;}} /*if(line.indexOf(1)==1, ) day1= line.substring(0, 0+1) //どっかでint型に変換する必要あり 7から10行目までの文字とりだす day12= line.substring(7, 10+1)*/ } br.close(); fr.close(); FileWriter fw = new FileWriter("Shopping2.txt"); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); fr.printIn("1日目は"+day1+"円で2日目は"+day2+"円で3日目は"+day3+"円です。");//エラー個所 pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("標準入力において例外が発生しました。"); } } } エラーメッセージは以下のようになっております。 H:\>javac Kadai24.java Kadai24.java:27: エラー: 不適合な型: String[]をStringに変換できません: line2 = line.split(":", 0); ^ Kadai24.java:45: エラー: シンボルを見つけられません fr.printIn("1日目は"+day1+"円で2日目は"+day2+"円で3日目は"+day3+"円です 。"); ^ シンボル: メソッド printIn(String) 場所: タイプFileReaderの変数 fr エラー2個
dice142

2018/11/08 05:21 編集

https://teratail.com/questions/156888 こちらで質問されてたのでそちらに回答しました。 同じ要件内であればその質問内で追加質問、別要件なら別に質問を立てるようにしたほうが良いです。 あちこちに質問するのは見直しにくいですし、混乱のもとになるので非推奨です。 ついでに言えば使い方を調べるとか、エラーを調べるとかしましょう。
yyhsxhxh

2018/11/08 06:53

ご指摘ありがとうございます、 そしてご丁寧にご回答ありがとうございます、参考になりました、、!
guest

0

回答はすでに出そろってる感じなので、今のコードでメソッドの使い方がおかしい点をいくつか。

java

1while (br.ready()) { //特定した行の文字を取り込みたい

正直、readyというメソッドを使っているところを初めて見ました。というか存在自体知りませんでした。
調べてみると確実性のある動作をしないっぽいのでお勧めできません。一般的にはこう書くかと。

java

1while((line = br.readLine()) != null) {

java

1num= line.substring(0, 0+1) 2num= line.substring(0, 0+1)

なぜ2回書いた。セミコロンもないし、そもそもnumの宣言がどこにもない。

蛇足:root_jpさんのの別バージョン

java

1// import static java.util.stream.Collectors.*; 2 3public static void main(String[] args) 4 try ((Stream<String> lines = Files.lines(Paths.get("kaikei.txt"))) { 5 lines.collect( 6 groupingBy(s -> s.substring(0, s.indexOf(','), 7 TreeMap::new, 8 summingInt(s -> Integer.parseInt(s.substring(s.indexOf(':') + 1))) 9 ).forEach((k, v) -> System.out.println(k + ":" + v)); 10 } 11}

投稿2018/11/08 07:21

swordone

総合スコア20651

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

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

0

Java

1public static void main(final String[] args) throws Exception { 2 try (Stream<String> lines = Files.lines(Paths.get("kaikei.txt"))) { 3 Map<String, Integer> summary = lines.map(line -> { 4 String[] split = line.split(","); 5 return new String[] { split[0], split[1].split(":")[1] }; 6 }).collect(Collectors.groupingBy(array -> array[0], TreeMap::new, Collectors.summingInt(array -> Integer.parseInt(array[1])))); 7 summary.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue())); 8 } 9}

投稿2018/11/08 04:25

編集2018/11/08 04:27
root_jp

総合スコア4666

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問