註:元のコードが意味不明なので、かなり独自解釈しています。
要するに最小の比を見つければいいのですかね?
Java
1import java.util.Arrays;
2
3class Main {
4 public static void main(String[] args) {
5 int[] num = {100, 2, 4, 3, 40, 30, 23};
6 double[] ratio = new double[num.length-1];
7
8 for(int i = 0; i < num.length-1; i++) {
9 ratio[i] = 1.0 * num[i] / num[i+1];
10 }
11
12 Arrays.sort(ratio);
13 System.out.println(ratio[0]);
14 }
15}
注意すべき点
・ int割るintは整数です。その点は留意していますか?
・ bが何度も上書きされています。おそらく期待する挙動ではないでしょう。
・ 変数の名前が適当すぎます。意味がある命名をしましょう。
・ aの要素に0が含まれることは絶対にないのでしょうか。
追記
ちなみに、ご提示のコードは次のように書いているのと同じです。
Java
1class Main {
2 public static void main(String[] args) {
3 int a[] = {100, 2, 4, 3, 40, 30, 23};
4 int b = 0;
5 int c = 0;
6 for(int j = 0; j < 6; j++) {
7 b = a[0] / a[j];
8 }
9 if(false) { // コンパイルエラーですが
10 c = b;
11 }
12 System.out.println(c);
13 }
14}
もうちょっと整理するとこう。(例外周りはやや挙動が異なりますが)
Java
1class Main {
2 public static void main(String[] args) {
3 int a[] = {100, 2, 4, 3, 40, 30, 23};
4 int b = a[0] / a[5];
5 int c = 0;
6 System.out.println(c);
7 }
8}
究極的には、次のように書いても同じです。
Java
1class Main {
2 public static void main(String[] args) {
3 System.out.println(0);
4 }
5}
どんなコードを書いているか、意識しながら書くようにしましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/04 13:28
2017/12/04 13:34
2017/12/04 14:27