
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jdbcでinsert,delete,createをe...
-
プログラミングの問題です。大...
-
Googleログインボタンのデザイ...
-
JDONWROADER2のエラー修復
-
「main メソッドを持つクラスが...
-
Eclipse 動的プロジェクトで404...
-
正規表現について質問です。 カ...
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
ゲーム開発の入門書を探しています
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JDONWROADER2のエラー修復
-
Googleログインボタンのデザイ...
-
配列にnullを代入すると、null...
-
jdbcでinsert,delete,createをe...
-
「main メソッドを持つクラスが...
-
プログラミングの問題です。大...
-
eclipseで作ったプログラムを他...
-
正規表現について質問です。 カ...
-
Eclipse 動的プロジェクトで404...
-
マイクラでPythonのプログラミ...
-
jdk17.06のインストーラーが起...
-
自作Androidアプリのデータ引き...
-
直し方について教えて頂きたい...
-
eclipse実行ができない
-
サーブレットをapacheで公開す...
-
あんまりお料理しないのに台所...
-
CSV出力を画面から選択したデー...
-
次のhtml・cssでspan内の文字を...
-
問題作成のWebアプリの作り方を...
-
ゲーム開発の入門書を探しています
おすすめ情報