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

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

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

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

コマンドプロンプト

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

Q&A

解決済

2回答

683閲覧

Javaでテキストファイルに書かれている数字のみを取出し、計算するプログラムのエラーの対処方法を教えてほしいです。

yyhsxhxh

総合スコア13

Java

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

コマンドプロンプト

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

0グッド

0クリップ

投稿2018/11/08 05:01

編集2018/11/09 01:19

緊急でございます。
Javaのプログラムで、
支出を記録したファイル, kaikei.txtを読み込み、1日・2日・3日それぞれの支出額の合計を計算するプログラムを作りたいのですが、エラーが出て、どう変更すればプログラムが正常になるか分からず、困っております、、、。

どなたがどの部分をどのように変更すれば良いか教えていただけませんでしょうか・・・

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 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個

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

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

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

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

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

guest

回答2

0

エラー文にほぼそのまま書いてるので調べれば解決法が出てくるかと思いますが。。

エラー: 不適合な型: String[]をStringに変換できません:

split()は指定した区切り文字で分けた配列が返ってきます。

String型で受け取ることはできませんので、String型の配列で受け取ってください。

エラー: シンボルを見つけられません

場所: タイプFileReaderの変数 fr

frという変数が宣言されてないです。

投稿2018/11/08 05:17

dice142

総合スコア5158

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

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

yyhsxhxh

2018/11/08 06:51

配列で受け取らなければいけなかったのですね、教えていただきありがとうございます!!
guest

0

ベストアンサー

splitはString[]で受け取らないといけないのでString[]で変数作ってください

frにprintInというメソッドがないので見直してください

Java

1fr.printIn("1日目は"+day1+"円で2日目は"+day2+"円で3日目は"+day3+"円です。");//エラー個所

frはファイルリーダーなのでファイルに書き込む用のものではないはずです。

※ファイルに書き込むメソッドはprintInではなくprintlnです
https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintWriter.html

どうしてもっていう場合のみ下記ソース参考にしてください。


Java

1import java.io.*; 2import java.lang.*; 3 4public class Kadai24 { 5 public static void main(String[] args) { 6 try { 7 int i,day1,day2,day3,num1,num2; 8 9 day1=0; 10 day2=0; 11 day3=0; 12 13 System.out.println("ファイル「InputFile.txt」の内容をファイル「OutputFile.txt」にコピーします。"); 14 15 FileReader fr = new FileReader("Shopping.txt"); 16 BufferedReader br = new BufferedReader(fr); 17 18 while (br.ready()) { //特定した行の文字を取り込みたい 19 String[] line = br.readLine().split(","); 20 21 String line1= line[0].substring(0, 0+1); 22 num1= Integer.parseInt(line1); 23 24 String[] line2 = line[1].split(":", 0); 25 num2= Integer.parseInt(line2[1]); 26 27 if(num1 == 1){day1=day1+num2;}{if(num1==2){day2=2+num2;}{day3=day3+num2;}} 28 29 /*if(line.indexOf(1)==1, ) 30 day1= line.substring(0, 0+1) //どっかでint型に変換する必要あり 7から10行目までの文字とりだす 31 day12= line.substring(7, 10+1)*/ 32 } 33 br.close(); 34 fr.close(); 35 36 FileWriter fw = new FileWriter("Shopping2.txt"); 37 BufferedWriter bw = new BufferedWriter(fw); 38 PrintWriter pw = new PrintWriter(bw); 39 pw.println("1日目は"+day1+"円で2日目は"+day2+"円で3日目は"+day3+"円です。"); 40 41 pw.close(); 42 bw.close(); 43 fw.close(); 44 45 System.out.println("。"); 46 } 47 catch (IOException e) { 48 System.out.println("標準入力において例外が発生しました。"); 49 } 50 } 51}

投稿2018/11/08 05:23

編集2018/11/08 05:45
rururu3

総合スコア5545

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

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

rururu3

2018/11/08 05:32

クラス名から課題だろうとわかるんですが、コンパイルエラー直した成果物も載せたいのです・・・こまったものですw
yyhsxhxh

2018/11/08 05:38

ご回答、本当にありがとうございます。。!! frについてなのですが FileReader fr = new FileReader("Shopping.txt"); BufferedReader br = new BufferedReader(fr); のFileReader fr部分で、すでに宣言できていると思っていたのですが、違うのでしょうか。。 すみませんどうやって変数宣言して良いかわからず。。
rururu3

2018/11/08 05:40

記載間違えました。修正しておきます。
rururu3

2018/11/08 05:46

修正しました。実際は変数宣言されてない・・・ではなく使ってるメソッドがないが正解です
yyhsxhxh

2018/11/08 06:50

そういうことだったのですね!!無事コンパイル成功できました。 本当にご丁寧にありがとうございました、、!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問