我正在开展一个项目,并坚持下一步该做什么。我需要编写一个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];
}
}
答案 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];