或る程度まで進みましたが、
ソースコードが分からず困っています;;
こんな問題なのですが・・・
課題1
以下の要件を満たす電卓のプログラム
Calculatorクラスを作成し、ソースコードを
示せ。
1.最初に標準入力から文字を1文字入力し
計算の種類や動作を決定する。
必要な入力文字と動作の種類の対応を下記に示す。
入力文字 動作
+ 数値a,bを受け取りa+bの結果を表示する
- 数値a,bを受け取りa-bの結果を表示する
* 数値a,bを受け取りa*bの結果を表示する
/ 数値a,bを受け取りa/bの結果を表示する
ただし、b=0の時は「Infinity」と表示する
! 数値aを受け取りaの階乗を計算し表示する
q 終了する
2. 計算の種類が決定した後、標準入力から計算に必要な数字を入力する
3.計算が終了した後、再度、標準入力からの動作の
種類を受け付ける。
こんな感じです。
で、一応ここまで進んでいます。
import java.io.*;
public class Calculator {
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(
new InputStreamReader(System.in));
int i = 0;
int answer = 1;
System.out.println("+、-、*、/、!、qから選んで入力してください");
String s = buf.readLine();
System.out.println("数字を二つ入力してください");
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
if (s.equals("+")) {
System.out.println(a + b);
}
if (s.equals("-")) {
System.out.println(a - b);
}
if (s.equals("*")) {
System.out.println(a * b);
}
if (s.equals("/")) {
System.out.println(a / b);
}
if (s.equals("!")) {
System.out.println("階乗の計算をします。数字を一つ入力してください");
while (i < a) {
i++;
answer = i * answer;
System.out.println("a!=" + answer);
}
}
if (s.equals("q")) {
//終了する処理
}
}
}
とりあえず、自分でなんとか・・・。
後、残ったのは割り算で
bに0が入力された時にInfinityと表示するのと、
階乗と終了する処理・・・・。
そして、終了の命令があるまで計算を続ける
ソースを書く・・・。
ここからどのようにすればいいのでしょうか・・・
教えてください。お願いします!
No.3ベストアンサー
- 回答日時:
まず標準入力から1文字取得します。
System.out.println("+、-、*、/、!、qから選んで入力してください");
String s = buf.readLine();
String answer = "";
次に入力された種類によって必要な数だけ標準入力から数字を取得します。
if( s.equals("+") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
answer = Integer.toString(a + b);
}
if( s.equals("-") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
answer = Integer.toString(a - b);
}
// 省略
if( s.equals("/") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
if( b == 0 ) {
answer = "Infinity";
} else {
answer = Integer.toString(a / b);
}
}
if( s.equals("!") ) {
int a = Integer.parseInt(buf.readLine());
int value = 0;
for( int i = 0; i < a; i++ ) {
value *= (i + 1);
}
answer = Integer.toString(value)
}
System.out.println(answer);
answerをStringにすることで"Infinity"も出力することができます。
ただし全ての条件でInteger.toStringを行わないといけませんが。
qを入力されたときに終了する
例えば以下のメソッドでは return int; を必ず書きます。
public int sum(int a, int b) {
return a + b;
}
ここで戻り値がvoidのメソッドのときに途中で終了したい場合は
public void ave(int a, int b) throws Exception {
if( b == 0 ) {
return; //戻り値なし
}
System.out.println(a / b);
}
return;で処理を終了します。
つまり
if( s.equals("q") ) {
System.out.println("処理を終了します。");
return;
}
となります。
最後に終了の命令があるまで計算を続けるには"q"が入力されるまで無限ループさせればいいので
while( true ) {
System.out.println("+、-、*、/、!、qから選んで入力してください");
// 省略
System.out.println(answer);
}
No.2
- 回答日時:
3.計算が終了した後、再度、標準入力からの動作の種類を受け付ける。
つまり、終了の命令があるまで計算を続けるソースを書くには、
whileループとbreak文を使いましょう。
while(条件){
繰り返したい処理a
繰り返したい処理b
・・・・
if(条件){
break;
}
繰り返したい処理1
繰り返したい処理2
・・・・
}
No.1
- 回答日時:
とりあえず気がついたところ。
・「q」を入力したのに、数字を2個入力しなければいけない。
・switchをなぜ使わないのか。
・階乗の計算をするときは数字を3個入力しなければいけない。
で、割り算で「b」が0だったらは、
if (式) {
文
} else {
文
}
で0の時と0じゃ無いときの処理を分けて書く。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
〔java〕 計算結果に0をつける...
-
for文を使った累乗の計算方法に...
-
java 拡張for map
-
java キーボード入力された値の...
-
javaのエラーが回収できない
-
コマンドライン引数の例外処理...
-
入力データ数を入力して、その...
-
JAVAのfor文で困っています。
-
Ctrl+Zが入力されると終了する...
-
*で正三角形を出力
-
C言語のポインターに関する警告
-
パソコンキーボードで時分秒を...
-
結合した文字列をファイル名に...
-
プログラミングの問題です。大...
-
IF関数でEmpty値を設定する方法。
-
Java配列でNullPointerExceptio...
-
[JAVA]try 内の変数を外で!?
-
cloneメソッドについて (java)
-
VBAで配列の計算
-
配列で、値の入っている要素数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Randomメソッドの確率設定
-
論理演算子”||”またはの入力方法
-
テキストボックスに入力された...
-
java キーボード入力された値の...
-
countに実行した回数をいれたい...
-
Java 配列<選挙>
-
総称型ArrayList<E>への参照...
-
Java、2の0乗~10乗の表示
-
2つのスクロールバーを連動させ...
-
数値⇒漢数字変換 java
-
Java 入力した整数値の合計を、...
-
配列を逆順させて表示させる方...
-
エラー(互換性の無い型)
-
javaで数独を解くプログラムに...
-
2次元配列の並び替え
-
javaのエラーが回収できない
-
7つ数字を表示したら改行すると...
-
java 電卓のプログラム
おすすめ情報