最初に最大公約数を求めるクラスを定義して、それを継承して最小公倍数を求めるプログラムを作ったのですがコンパイルはできても実行するとうまく作動しません。
理想の実行例は以下の通りです。
1st ? 12
2nd ? 8
Cookie=4
Late=24
ですが、1st? と 2nd? に数値を入力後に「Exception in thread "main" java.lang.ArithmeticException: / by zero」というエラーがどうしても出てきます。
なにが原因なのかさっぱり分からなくなり完全に詰まってしまいました・・・。
どなたか解る方がいらっしゃいましたら、どうか助けて下さい。
書いたソースコードは以下の通りです。
import java.io.*;
class Cookie{
private int aa, bb;
Cookie(int x, int y){
aa = x; bb = y;
}
public int cookie(){
int a = aa, b = bb; int r;
while(b > 0){
r = a%b;
a = b;
b = r;
}
return a;
}
}
class ChocoLate extends Cookie{
private int i,r;
ChocoLate(int x, int y){
super(x,y);
i = (x * y) /r;
}
public int late(){
return i;
}
}
class sample{
public static void main(String[] args) throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("1st?"); String str1 = br.readLine();
System.out.print("2nd?"); String str2 = br.readLine();
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
ChocoLate lg = new ChocoLate(a,b);
System.out.println("Cookie=" + lg.cookie());
System.out.println("Late=" + lg.late());
}
}
No.5ベストアンサー
- 回答日時:
N04 さんの書かれた ものでいいですが、
あえて、質問者さんの意図をくめば
最小公倍数は 元の数字の積を最大公約数で割った数だから
public int getGCD() {
return (aa*bb)/getLCM();
}
って定義すればいいわけです。
この回答への補足
質問の意図を汲んでいただいて感謝します。
もう素人すぎて本当に申し訳ないのですが、御呈示頂いた定義は
public int late(){
return i;
}
の部分を
public int getGCD() {
return (aa*bb)/getLCM();
}
に変更するという意味合いでよろしいのでしょうか?
質問ばかりで本当に申し訳ありません。
No.7
- 回答日時:
> 最小公倍数は 元の数字の積を最大公約数で割った数
がーん,知らなかった…
http://homepage1.nifty.com/moritake/sansu/6/05ba …
私にとって回答した以上の収穫でした,ありがとうございます。
No.4
- 回答日時:
ideone参照だけじゃなくソースを載せることにしました。
class Pair_PositiveNumber {
private int aa, bb;
Pair_PositiveNumber(int x, int y) {
if (x <= 0) { x = 1; }
if (y <= 0) { y = 1; }
if (x > y) {
aa = x; bb = y;
} else {
aa = y; bb = x;
}
}
public int getLCM() {
int a = aa, b = bb, r;
while (b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
public int getGCD() {
int a = aa, b = bb;
while (a != b) {
if (a > b) {
b += bb;
} else {
a += aa;
}
}
return a;
}
}
class Q7633163 {
public static void main(String[] args) {
int a = 8;
int b = 12;
Pair_PositiveNumber pair = new Pair_PositiveNumber(a, b);
System.out.println("LCM = " + pair.getLCM());
System.out.println("GCD = " + pair.getGCD());
}
}
この回答への補足
ソースまで御呈示頂いて感謝いたします。
自分で書いていて本当に迷子になってしまいました。
最大公約数と最小公倍数の継承になぜ?という部分なのですが、自分でもよく解らずに教科書の問いに挑戦した次第でございます。
さらに、キーボード入力による出力表示も上乗せで出題されていてパニック状態です。。。
No.1
- 回答日時:
こんにちは。
私もJavaは詳しくありませんが、実行してみました。
結果)
1st?8
2nd?24
Exception in thread "main" java.lang.ArithmeticException: / by zero
at LcmGcm.<init>(sample.java:22)
at sample.main(sample.java:37)
ここで1行目のエラーは「0で除算した」と言う意味です。
2行目以降はエラーの発生に関連する行です。
22行目でrで割っていますが、初期化していないのが原因ではないでしょうか。
では。
この回答への補足
ここで1行目のエラーは「0で除算した」と言う意味です。
2行目以降はエラーの発生に関連する行です。
↑
なるほど!こんなエラーは初めて見たので勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メインが含まれていません
-
DataSet(DataTable)の使い方
-
c# デリゲート関連の命名について
-
sin曲線とcos曲線を描くプログ...
-
javaでcsvファイル読込時の改行...
-
全組み合わせの出力
-
6桁の数字を重複なしでランダム...
-
Javaで簡単なアニメーションを...
-
Javaで電卓を作りたい
-
Java 初心者 int型の取り扱い方
-
VBAで配列の計算
-
最後の行に移動するには?
-
パソコンキーボードで時分秒を...
-
全角英数字とハイフンを半角に...
-
Java配列でNullPointerExceptio...
-
Javaで改行などが出来ないのです。
-
[JAVA]try 内の変数を外で!?
-
EXCEL VBA で、0から?1から?
-
VBで作った乱数を一度も重複さ...
-
テキストファイルを読み込んで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
JAVA エラー 式の開始が不正で...
-
式の型は配列型で int に解決済...
-
メインが含まれていません
-
javaでcsvファイル読込時の改行...
-
DataSet(DataTable)の使い方
-
java spring でエラーが出て困...
-
C++からC#のdllを参照する際、...
-
c# デリゲート関連の命名について
-
JUnit4のアノテーションについて
-
SwingでJtableのヘッダ行が表示...
-
Java エラーについて
-
6桁の数字を重複なしでランダム...
-
C#で実行時にメソッドの返り値...
-
JAVAでCの関数ポインタのような...
-
IN演算子の中身を動的に生成
-
行の途中から読み込む方法
-
javaでカレンダー作成
-
ビープ音をなめらかに鳴らしたい
-
初心者ですが、今javaで簡単な...
おすすめ情報