3つのソースが一つになって動く電卓のプログラムみたいですが・・・
倍精度浮動小数点数で計算結果を表示します
また、画像は動作させるときの条件です。
動いてはくれるんですけど、
足し算になった時に3.0+3.0=0.0となってしまいます。
課題1
次のソースコード1-1 と1-2 は、電卓のプログラムCalculator クラスと標準入力用のクラスである。この計算機クラスを動作させるには、Adder(加算器)、Subtracter(減算器)、Multiplier(乗算器)、Divider(除算器)、Factrial(階乗)の5 つのクラスが必要である。これら5 つのクラスのソースコードを示せ。また、過去の課題や講義資料を参考に処理の流れが分かるようコメントを追加せよ。
1-1のCalculatorクラスと標準入力(StandardInputクラス)を書きます。
これから作ろうとしているAdderクラスは元々穴埋めになっていて
(他のクラスも同様)
一通り埋めてみましたが、正しい結果が出ません。どこがおかしいのか
ヒントだけでもいいので教えてください。
Adderクラスは一番下に書いておきました。
1-1Calculator.java
// 電卓 のクラス
public class Calculator {
// StandardInput.javaで読み込んだ文字を受け取るメソッド
public static void main(String[] args){
char operation = ' '; // 入力された文字列を代入する為の変数
while (operation != 'q') {
StandardInput stdin = new StandardInput();
System.out.println("演算の種類: (+,-,*,/,!; q で終了)");
operation = stdin.getChar();
// 入力された文字列に応じてそれぞれの処理を実行する
switch (operation) {
case '+': // 加算 の処理
Adder add = new Adder();
add.show(stdin.getDoubleArray(2));
break;
case '-': // 減算 の処理
Subtracter sub = new Subtracter();
sub.show(stdin.getDoubleArray(2));
break;
default: // 例外 の処理
System.out.println("演算の種類を判別できません");
break;
}
}
}
}
ソースコード1-2 StandardInput.java
/* 標準入力クラス */
import java.io.*;
public class StandardInput {
protected BufferedReader buf;
public StandardInput() {
this.buf = new BufferedReader(new InputStreamReader(System.in));
}
public StandardInput(BufferedReader buf) {
this.buf = buf;
}
public char getChar() {
try {
System.out.print("1 文字入力してください:");
return buf.readLine().charAt(0);
} catch (Exception e) {
System.out.print(e);
return ' ';
}
}
public double getDouble() {
try {
System.out.print("数を入力してください:");
return Double.parseDouble(buf.readLine());
} catch (Exception e) {
System.out.print(e);
return -1;
}
}
public int getInt() {
try {
System.out.print("整数を入力してください:");
return Integer.parseInt(buf.readLine());
} catch (Exception e) {
System.out.print(e);
return -1;
}
}
public double[] getDoubleArray(int max_input) {
double[] input = new double[max_input];
try {
for (int i = 0; i < max_input; i++) {
System.out.print((i + 1) + "つ目の数字を入力してください:");
input[i] = Double.parseDouble(buf.readLine());
}
} catch (Exception e) {
System.out.print(e);
}
return input;
}
public int[] getIntArray(int max_input) {
int[] input = new int[max_input];
try {
for (int i = 0; i < max_input; i++) {
System.out.print((i + 1) + "つ目の数字を入力してください:");
input[i] = Integer.parseInt(buf.readLine());
}
} catch (Exception e) {
System.out.print(e);
}
return input;
}
}
// 加算機のクラス
public class Adder {
// ??? を行うメソッド
public double calc(double[] input) {
double solution = 0;
for ( int i = 0; solution < i; i++ ) {
solution += input[i];
}
return solution;
}
// 計算結果の表示を行うメソッド
public void show(double[] input) {
System.out.print(input[0]);
for (int i = 1; i < input.length; i++) {
System.out.print(" + " + input[i]);
}
System.out.println(" = " + calc(input));
}
}
ごめんなさい・・・凄く長いですがお願いします。
No.1ベストアンサー
- 回答日時:
// 加算機のクラス
public class Adder {
// ??? を行うメソッド
public double calc(double[] input) {
double solution = 0;
for ( int i = 0; i < input.length; i++ ) { //この行
solution += input[i];
}
return solution;
}
// 計算結果の表示を行うメソッド
public void show(double[] input) {
System.out.print(input[0]);
for (int i = 1; i < input.length; i++) {
System.out.print(" + " + input[i]);
}
System.out.println(" = " + calc(input));
}
}
//当然、書き換えたらAdder.javaをコンパイルしなおすべし
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Ruby パイソンプログラミング 2 2022/12/03 18:44
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Ruby プログラミング 3 2023/06/09 14:30
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Socketの接続のタイムアウトを...
-
変数を動的に利用するには?
-
クラスを使った電卓のプログラム
-
Javaでlog4jを使ってログ出力を...
-
C# DatagridviewにExcelシート...
-
Javaでデータベースの内容をGUI...
-
プログラミングの問題です。大...
-
javaで質問です。 文字列2023/2...
-
ループ処理の際、最後だけ","を...
-
IF関数でEmpty値を設定する方法。
-
java junit list同士の比較方法
-
yyyymmddからyyyy/mm/d...
-
EXCEL VBA で、0から?1から?
-
JSPやサーブレットでSystem.out...
-
System.out.printlnの出力先
-
System.err. printlnとSystem.o...
-
Javaで改行などが出来ないのです。
-
大量のデータを読み込んで表示...
-
javascriptで文字列のsjis利用...
-
Junitテストでvoid戻り値メッソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
プログラミングの問題です。大...
-
JSP/Servletのパラメータの受け...
-
javaで特定の文字列から特定の...
-
コンストラクタの引数の中のnew?
-
NoSuchMethodErrorが解決できま...
-
GetterとSetterをやったのに。
-
javaのプログラミングで作るRPG...
-
C# DatagridviewにExcelシート...
-
初心者なので教えてほしいです。
-
javaでのアッカーマン関数
-
randomで
-
Socketの接続のタイムアウトを...
-
【java】同ディレクトリ別ファ...
-
Javaでデータベースの内容をGUI...
-
Javaで日本語の出力が文字化けする
-
インタフェイス実装と抽象クラ...
おすすめ情報