Java:从数组中分配对

时间:2014-08-20 20:45:26

标签: java arrays if-statement exception-handling divide

我正在开展一个项目,并坚持下一步该做什么。我需要编写一个Java程序,从用户接受十个值并将这些数字放在一个数组中。数组中的数字将一起添加,结果显示给用户。 (我得到了那部分)

问题在于:程序应该比较元素1和2(在数组中)的值,并将较大的数字除以较小的数字。它应该比较所有奇数/偶数元素的值,并将较大的值除以较大的值。

我根本不知道怎么做。我从if-else语句开始,但是我遇到了错误。它知道它现在一团糟,但任何划分阵列对的帮助都会非常有帮助。发给我链接,我找不到任何成功,所以我可以了解更多。

谢谢!

这是我到目前为止所做的:

/ import java.util.Scanner; 公共类ExceptionHandler {

/**
 * @param args the command line arguments10
 * 10
 */
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.print("Please enter ten values:");
    System.out.println();
// Input the data from the user.

    int[ ] digit = new int[11];
    int sum = 0;
    //Declare an array

    for (int i = 1; i < digit.length; i++) {
        System.out.print("Value " + i + ": ");
        digit[i] = in.nextInt();
        sum += digit[i];
    }

    System.out.println("Total Values in Array:"+ sum);
     // Calculate the sum and print the total

    System.out.println("Would you like to divide values?");
    // Fix this later


             int result= digit[i]; 
             if (digit[i] > digit[i + 1]) 
                 result = digit[i] / digit[i + 1]; 
             else {
                 (digit[i + 1] / digit[i]);
                }
    // Compare element 0 with 1, divide larger element by smaller element
             if (digit[i])> digit[i + 3])
                result = digit[i] / digit[ i+ 3];
             else{
                 (digit[i +3])/ digit[i];   
                 }

        }

4 个答案:

答案 0 :(得分:2)

您正在使用int进行划分。使用double代替,因为它可以用小数点精度划分两个整数。

// needed for division
double[] digit = new double[11];
for (int i = 0; i < digit.length; i++)
{
    digit[i] = (double)in.nextInt;
    sum += (int)digit[i];
}

//you can use this variable if needed, if not, ignore it
double[] divisionResult = new double[digit.length / 2];
for(int i = 1; i < digit.length; i += 2) {
    double result = digit[i]; 
    if (result > digit[i + 1]) 
       result = result / digit[i + 1]; 
    else {
       result = digit[i + 1] / result;
    }
    divisionResult[i / 2] = result;
    System.out.println(result);
}

编辑:我也不确定你为什么要使用

for(int i = 1; i < 11; i++)

因为您使用过它,我在上面使用过它,但实际的约定应该是:

for(int i = 0; i < 10; i++)

不会产生巨大的差异,但最好遵循良好的编码惯例:)

答案 1 :(得分:1)

您可以使用for循环:

  for (int i = 0; i < 10; i += 2) {
     if (digit[i] > digit[i + 1]) {
        result = digit[i] / digit[i + 1];
     }
     else {
        result = digit[i + 1] / digit[i];
     }
     System.out.println(result);
  }

答案 2 :(得分:0)

如果我按照你的意愿做到这一点,这应该有用:

for (int i = 0; i < array.length; i = i+2) {
    int firstDigit = array[i];
    int secondDigit = array[i+1];
    if (firstDigit > secondDigit) {
        return firstDigit / secondDigit;
    } else {
        return secondDigit / firstDigit;
    }
}

迭代数组并将第一个与第二个元素进行比较。通过将counterVariable(i)增加2,你总是比较数组的第1 /第2,第3 /第4等数字。

希望这会有所帮助:)

答案 3 :(得分:0)

变量i是代码中for循环的本地变量。如果你想再次使用i,你需要在循环之外声明它,以便你在for循环的范围之外使用它。另外,&#34; i&#34;的最后一个值这是最后一个数组索引,无论如何都会抛出数组超出绑定异常(换句话说,你需要在你初始化的时候创建另一个循环&#34; i&#34;在你的&#34下再次为0;你想要吗?划分价值?&#34;声明)。最后,你需要做一个作业,所以

(digit[i + 1] / digit[i]);

不是有效的声明。如果要将其写入结果,则需要编写:

result = (digit[i + 1] / digit[i]);

如果您想要覆盖,可以使用

digit[i+1] = (digit[i + 1] / digit[i]);

digit[i + 1] /= digit[i];