質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.37%

  • Java

    10442questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

割り算の結果がうまくでない。

解決済

回答 2

投稿 2017/12/04 21:26

  • 評価
  • クリップ 0
  • VIEW 77

akira8

score 10

前提・実現したいこと

前の結果と比較して低い数のほうを最終結果として出したい。

発生している問題・エラーメッセージ

比較できていない

該当のソースコード

class Main {
  public static void main(String[] args) {

    int a[] = {100, 2, 4, 3, 40, 30, 23};
    int b = 0;
    int c = 0;

    for(int i=0; i<1;i++) {
      for(int j=i; j<6; j++) {
        b = a[i] / a[j];
      }
      if(b > b) {  //
        c = b;
      }
    }
    System.out.print(c);

  }
}

試したこと

if(b > b) で同じものを比較してしまっているのですが
前の結果と比較する方法を教えてください。

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

註:元のコードが意味不明なので、かなり独自解釈しています。

要するに最小の比を見つければいいのですかね?

import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        int[] num = {100, 2, 4, 3, 40, 30, 23};
        double[] ratio = new double[num.length-1];

        for(int i = 0; i < num.length-1; i++) {
            ratio[i] = 1.0 * num[i] / num[i+1];
        }

        Arrays.sort(ratio);
        System.out.println(ratio[0]);
    }
}

注意すべき点
・ int割るintは整数です。その点は留意していますか?
・ bが何度も上書きされています。おそらく期待する挙動ではないでしょう。
・ 変数の名前が適当すぎます。意味がある命名をしましょう。
・ aの要素に0が含まれることは絶対にないのでしょうか。

追記

ちなみに、ご提示のコードは次のように書いているのと同じです。

class Main {
    public static void main(String[] args) {
        int a[] = {100, 2, 4, 3, 40, 30, 23};
        int b = 0;
        int c = 0;
        for(int j = 0; j < 6; j++) {
            b = a[0] / a[j];
        }
        if(false) { // コンパイルエラーですが
            c = b;
        }
        System.out.println(c);
    }
}

もうちょっと整理するとこう。(例外周りはやや挙動が異なりますが)

class Main {
    public static void main(String[] args) {
        int a[] = {100, 2, 4, 3, 40, 30, 23};
        int b = a[0] / a[5];
        int c = 0;
        System.out.println(c);
    }
}

究極的には、次のように書いても同じです。

class Main {
    public static void main(String[] args) {
        System.out.println(0);
    }
}

どんなコードを書いているか、意識しながら書くようにしましょう。

投稿 2017/12/04 21:49

編集 2017/12/04 23:04

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/04 22:28

    わかりづらくてすいません。
    1回目からn回目までの割り算の結果を変数に入れて比較をしたかったんです。
    上記のコードだとずっと変数「b」に結果値が格納されてしまうので、うまく「n-1回目」の結果を別な変数に入れて「n回目」の結果と比較できたらと考えたのですが。。

    キャンセル

  • 2017/12/04 22:34

    元のプログラムだと、if文の部分は一回しか通りませんよ。
    『1回目からn回目までの割り算の結果』と書いておられますが、何と何とを割るのでしょうか?
    まずは言葉で明確に仕様を表現するのが先決かと思います。

    言葉で挙動を正確に説明できたなら、それをコードに落とし込むだけです。

    キャンセル

  • 2017/12/04 23:27

    そうですね。自分でも頭がごちゃごちゃになってる気がします。
    うまく説明できるようになったらまた教えてください。

    キャンセル

0

cの初期値をInteger.MAX_VALUEとして、cと比較すればいいのでは?

投稿 2017/12/04 21:38

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • Java

    10442questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。