整理代码和修复错误(java)

时间:2014-12-17 20:40:51

标签: java compiler-errors

我需要修改代码,以便

  • 其结构更好
  • 更具可读性
  • 它使用方法和参数
  • 如果要输入不同数量的整数,则只需要更改一个语句

我的新代码位于底部,但它尚未正常工作,无法弄明白我还需要做些什么。如果有人可以提供帮助,那就可以了。

原始代码

import java.util.Scanner;

public class MakeMeBetter
{
    public static void main(String[] args)
    {
        int[] a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        Scanner b = new Scanner(System.in);

        System.out.println("Please input 10 numbers in the range 1-19 :> ");
        int c = b.nextInt();
        while (c < 1 || c > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[0] = c;

        int d = b.nextInt();
        while (d < 1 || d > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[1] = d;

        int e = b.nextInt();
        while (e < 1 || e > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[2] = e;

        int f = b.nextInt();
        while (f < 1 || f > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[3] = f;

        int g = b.nextInt();
        while (g < 1 || g > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[4] = g;

        int h = b.nextInt();
        while (h < 1 || h > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[5] = h;

        int i = b.nextInt();
        while (i < 1 || i > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[6] = i;

        int j = b.nextInt();
        while (j < 1 || j > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[7] = j;

        int k = b.nextInt();
        while (k < 1 || k > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[8] = k;

        int l = b.nextInt();
        while (l < 1 || l > 19)
        {
            System.out.println("Not in the range 1-19, please try again :> ");
        }
        a[9] = l;

        System.out.println("\nArray contents");
        System.out.print((a[0] < 10 ? " " : "") + a[0] + "  ");
        System.out.print((a[1] < 10 ? " " : "") + a[1] + "  ");
        System.out.print((a[2] < 10 ? " " : "") + a[2] + "  ");
        System.out.print((a[3] < 10 ? " " : "") + a[3] + "  ");
        System.out.print((a[4] < 10 ? " " : "") + a[4] + "  ");
        System.out.print((a[5] < 10 ? " " : "") + a[5] + "  ");
        System.out.print((a[6] < 10 ? " " : "") + a[6] + "  ");
        System.out.print((a[7] < 10 ? " " : "") + a[7] + "  ");
        System.out.print((a[8] < 10 ? " " : "") + a[8] + "  ");
        System.out.print((a[9] < 10 ? " " : "") + a[9] + "  ");
        System.out.println();

        boolean noSwap = false;
        int startAt = 0;
        int stopAt = 9;
        while (startAt < stopAt && noSwap == false)
        {
            noSwap = true;
            for (int m=startAt; m<stopAt; m++)
            {
                if (a[m] > a[m+1])
                {
                    int t = a[m];
                    a[m] = a[m+1];
                    a[m+1] = t;
                    noSwap = false;
                }
            }
            stopAt = stopAt - 1;
        }

        System.out.println("\nArray contents");
        System.out.print((a[0] < 10 ? " " : "") + a[0] + "  ");
        System.out.print((a[1] < 10 ? " " : "") + a[1] + "  ");
        System.out.print((a[2] < 10 ? " " : "") + a[2] + "  ");
        System.out.print((a[3] < 10 ? " " : "") + a[3] + "  ");
        System.out.print((a[4] < 10 ? " " : "") + a[4] + "  ");
        System.out.print((a[5] < 10 ? " " : "") + a[5] + "  ");
        System.out.print((a[6] < 10 ? " " : "") + a[6] + "  ");
        System.out.print((a[7] < 10 ? " " : "") + a[7] + "  ");
        System.out.print((a[8] < 10 ? " " : "") + a[8] + "  ");
        System.out.print((a[9] < 10 ? " " : "") + a[9] + "  ");
        System.out.println();

        double n = (a[0] + a[1] + a[2] + a[3] +
                      a[4] + a[5] + a[6] + a[7] +
                      a[8] + a[9]) / 10;

        System.out.println("The minimum number is: " + a[0]);
        System.out.println("The maximum number is: " + a[9]);
        System.out.println("The average value is: " + n);
        System.out.println("The median is: " + a[4]);
    }
}

新代码

import java.util.Scanner;
import java.math.*;
public class MakeMeBetterImproved {

    public static void main(String[] args) {
        Scanner kybd = new Scanner(System.in);
        int[] numbers = new int[10];
        int array = 0;

        System.out.println("Enter 10 integers: ");
        for (int i = 0; i < numbers.length; i++)  {
            numbers[i] = kybd.nextInt();
            int MyIntArray = array + i;

        }            

        System.out.println("The minimum number is: " + math.min);
        System.out.println("The maximum number is: " + math.max);
        System.out.println("The average value is: " + math.average);
        System.out.println("The median is: " + math.median);
    }
}

2 个答案:

答案 0 :(得分:0)

考虑使用比原始数组更动态的结构。

我喜欢ArrayLists:http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

将长代码重新组织为whilefor循环。

一个例子:

ArrayList<Integer> a = new ArrayList<Integer>();
Scanner b = new Scanner(System.in);

Integer c = null;
while (a.size() != 10) {
    System.out.println("Please input a number in the range 1-19 :> ");
    c = b.nextInt();
    while (c < 1 || c > 19)
    {
        System.out.println("Not in the range 1-19, please try again :> ");
        c = b.nextInt();
    }
    a.add(c);
}

System.out.println("\nArray contents");
for (int i=0; i<10; i++) {
    System.out.print((a.get(i) < 10 ? " " : "") + a.get(i) + "  ");
}

(等等......)

答案 1 :(得分:0)

你可以尝试一下吗?我做了一些改变。

package p2;

import java.util.Arrays;
import java.util.Scanner;

public class TicTacToe {

    public static void main(String[] args) {
        Scanner kybd = new Scanner(System.in);
        int[] numbers = new int[10];
        int sum = 0;
        System.out.println("Enter 10 integers: ");
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = kybd.nextInt();
            sum += numbers[i];
        }

        Arrays.sort(numbers);
        System.out.println("The minimum number is: " + numbers[0]);
        System.out.println("The maximum number is: " + numbers[9]);
        System.out.println("The average value is: " + sum / numbers.length);
        System.out.println("The median is: " + median(numbers));
    }

    public static double median(int[] m) {
        int middle = m.length / 2;
        if (m.length % 2 == 1) {
            return m[middle];
        } else {
            return (m[middle - 1] + m[middle]) / 2.0;
        }
    }
}