アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaに関する問題です。
次のソースコード作成をお願いします。
考えた事としては「try-catch」構文を使う?のはイメージしたのですが、難しいです。よろしくお願い致します。

「Javaのソースコード作成が難しいです.」の質問画像

A 回答 (10件)

    • good
    • 0
この回答へのお礼

ありがとうございます。
こちらをもとにdo-while構文を使って編集するとどのようになりますでしょうか。

お礼日時:2022/11/14 14:43

> また、スクールの講師から


>「while (true);」のwhileの中身を「true」ではなく工夫してください。と指摘がありました。工夫して表記することで実装の流れが更にスムーズになるようです。

> どのように編集したらよいのでしょうか。

さぁ?
何をもって「スムーズ」っつってんだかサッパリ分からんし。
とりあえずキミが全く自分で考える気が無い事だけは分かったが。

実装例?:
https://www.ideone.com/FQEkox
    • good
    • 0

> と考えましたが、



何をおっしゃってんだかサッパリ分かりません。
そもそも、

int s4 = new java.util.Scanner(System.in).nextInt();

なんでこれを付け加える事にしたんだかサッパリ分かりません。

「付け加える」には理由がある筈なんだけど、それが見えない。
    • good
    • 0
この回答へのお礼

確かにそうでした。
おっしゃる通りです。必要性は0でした。
「int s4 = new java.util.Scanner(System.in).nextInt();」を消しました。

また、スクールの講師から
「while (true);」のwhileの中身を「true」ではなく工夫してください。と指摘がありました。工夫して表記することで実装の流れが更にスムーズになるようです。

どのように編集したらよいのでしょうか。

お礼日時:2022/11/14 21:16
    • good
    • 0
この回答へのお礼

ありがとうございます。実装例をもとに
public static void main(String[] args) {
do {
try {
System.out.println("1つ目の整数を入力してください。");
int s1 = new java.util.Scanner(System.in).nextInt();
System.out.println("2つ目の整数を入力してください。");
int s2 = new java.util.Scanner(System.in).nextInt();
double s3 = s1 % s2;
System.out.println(s1 + "%" + s2 + "=" + s3);
} catch (ArithmeticException e) {
System.out.println("ArithmeticExceptionがスローされました。");
System.out.println("0で割ることはできません。");
} catch (java.util.InputMismatchException e) {
System.out.println("InputMismatchExceptionがスローされました。");
System.out.println("整数を入力してください。");
int s4 = new java.util.Scanner(System.in).nextInt();
}
System.out.println("終了するにはqを入力してください。");
java.util.Scanner s = new java.util.Scanner(System.in);
if (s.nextLine().equals("q")) {
System.out.println("終了します。");
break;
}
} while (true);
}
}
と考えましたが、実行結果がの流れが一度の実行で行われ、
解を表示、または例外検知後はキー入力を促し、q以外の文字が入力された場合は再び繰り返すようにするためにはどう修正でしょうか

お礼日時:2022/11/14 17:14

> System.out.printlnを適宜入れるだけでokでしょうか。



うん、基本的にはね。
InputMismatchExceptionってのは違うけど、これは実際エラー起こして試してみなけりゃ分からない。

言っておくけど、これ、かなりの良問ですよ。
ぶっちゃけた話、C言語系の宿題とか、もう教えてる側もしょーがねぇし、質問する側もしょーがねぇレベル、ってのが良く分かる食傷気味のどーしようもない問題が多いんだけど、この問題は「かなりキチンと考えてる」問題だと思う。
正直言うと、フツーのテキストで言うと「例外処理」自体が分かりづらいんだ。すぐraiseがどーたら、って話になって「例外処理が何のためにあるのか」書いてる本人がホンマ分かってんのか?と言うようなブツが多い。
一方、この問題は「わざと例外を投げる」事をキチンとさせる問題になってる。「例外処理」は「例外を投げる」のが前提なんで、「エラーを起こす事自体が忌避するべきものじゃなく、扱えるツールの一つだ」ってメッセージがキチンとあるんだ。
貴方の先生か、あるいは教科主任はかなりキチンとしたパースペクティヴを持って指導してんだろうな、と思う。キチンと教えようとしないとこういう問題を持ってこれないんだ。
だから貴方もテキストをキチンと読んで、キチンと授業を聞いて理解せんと勿体ないと思う。かなり巧妙なカリキュラムを組んでる良い学校に通ってるんじゃねぇのかな。
C言語系の宿題出すトコとしては珍しいくらい良問を選んでる学校、だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
「InputMismatchException」の部分かな?と思うのですが、
以下の表示が上手く実装されません...
どうしたらよいでしょうか。

1つ目の整数を入力してください。
e
InputMismatchExceptionがスローされました。
整数を入力してください。

終了するにはqを入力してください。
j

1つ目の整数を入力してください。
3
2つ目の整数を入力してください。
2.5
InputMismatchExceptionがスローされました。
整数を入力してください。

終了するにはqを入力してください。
t

お礼日時:2022/11/13 16:30

> 実行結果の例を下のようにしたいのですが、



うん?
System.out.printlnの使い方、まで分からないの?
    • good
    • 0
この回答へのお礼

ありがとうございます。
System.out.printlnを適宜入れるだけでokでしょうか。

お礼日時:2022/11/13 10:54
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実行結果の例を下のようにしたいのですが、
ご教授いただけますでしょうか。

1つ目の整数を入力してください。
e
InputMismatchExceptionがスローされました。
整数を入力してください。

終了するにはqを入力してください。
j
1つ目の整数を入力してください。
3
2つ目の整数を入力してください。
2.5
InputMismatchExceptionがスローされました。
整数を入力してください。

終了するにはqを入力してください。
t
1つ目の整数を入力してください。
3
2つ目の整数を入力してください。
0
ArithmeticExceptionがスローされました。
0で割ることはできません。

終了するにはqを入力してください。
w
1つ目の整数を入力してください。
7
2つ目の整数を入力してください。
3
7 % 3 = 1

終了するにはqを入力してください。
q
終了します

お礼日時:2022/11/12 18:05

どこまでできていて、どこがわからないんでしょうか。


・入力値が「q」であるかチェックする
・剰余計算をtry-catchする。
・例外を種類ごとにcatchし、それぞれSystem.out.printlnする
でできると思うんですが。
    • good
    • 2
この回答へのお礼

ありがとうございます。
入力値が「q」であるかチェックするにはどのように記載していけばよいのでしょうか。

お礼日時:2022/11/11 16:19

こんにちは



>整数ではなく文字等が入力された場合
「数値であるが整数ではない」場合が明記されていないが、チェックしなくてもよいのかなぁ・・

>「try-catch」構文を使う?のはイメージしたのですが
普通に入力値をチェックして、分岐するのを期待されているような気もするけれど・・?


全部をまとめて考えられないのなら、まずは、
「2数を入力して、除算の結果を表示する」
という単純なものを作成してから、追加・修正していってみてもよいかも。

その際に、処理のフローを書いておいて、何かを追加する際には、どこに何を追加すればよいかを考えて、修正してゆけば、最終形に辿り着けるのではないでしょうか?
    • good
    • 0

ご自身に対して出された課題の外注化・・・しかも無償でやって欲しいと?


それはいくらなんでも・・・です。(^^;
出された5つの条件のどの項目がわからないのでしょう?
そして、具体的にどういう部分がわからないのでしょう? 質問をされるのならそこだと思いますが。。。

で、Javaを全く勉強していない人、プログラミングの基礎である「あることをプログラムで処理したい際に、どういう事をどういう順番で行えばそれが出来るか?」を学んでいない人に対してご質問に添付されたような文面&内容の課題は出されないと思います。
本当にわからない所を明確にし、教科書にあるそこを説明している部分を参照してみましょう。

参考まで。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!