这是一个非常简单的应用程序,我在其中声明一个包含5个元素的数组。我使用增强的for循环来迭代数组的长度。我为下一个号码的用户输入导入了一个Scanner对象,然后我计算了总和。但总和显示0,这不是应用程序输出的结果。这是应用程序: //应用程序创建一个数组,该数组将包含5个索引并询问每个索引号的用户输入 //在控制台窗口中计算并显示索引的总和。
import java.util.Scanner;
public class FindSum
{
public static void main (String [ ] args)
{
Scanner input = new Scanner(System.in);
int [ ] number = new int [ 5]; // instantiate the array
int sum = number[0];//initialize sum to array index 0
System.out.print("Enter number: " );//prompt for user input
for (int i:number)//uses enhanced for loop
{
number[i] = input.nextInt();//reads input
if(i<number.length)//evaluates condition
{
System.out.print("Enter next number: ");//prompt for next input number
}else
sum += number[i];//initializes sum to number array
}//end enhanced for loop
System.out.println("\nThe sum is " +sum);
}//end method main
}//end class FindSum
答案 0 :(得分:3)
将增强型for
循环更改为常规for
循环
for (int i = 0; i < number.length; i++)
问题是number
仅包含0
,因此循环的每次迭代都会将0
分配给i
。此外,您需要删除您的逻辑
// if(i<number.length)//wouldn't be in loop body if condition weren't true.
// {
System.out.print("Enter next number: ");//prompt for next input number
// }else
sum += number[i];//add number to sum.
答案 1 :(得分:0)
只需在用户输入值时更新总和:
System.out.print("Enter next number: ");//prompt for next input number
sum += input.nextInt();
您的代码目前只是将您输入的最后一个数字(第5个数字)放入数组中,因为之前的数字已被删除。
你的for循环需要是一个正常的循环才能更新你的数组。目前,我将始终为0,因为您的数组在创建时用0&#39;进行初始化。因此,每次调用for循环时,它将使用0表示i。因此,else语句将永远不会运行,它将继续将用户输入的当前值放在第0位。
最后,你应该有一个for循环:
for (int i = 0; i < number.length; i++)//uses enhanced for loop
{
System.out.print("Enter next number: ");//prompt for next input number
number[i] = input.nextInt();//reads input
sum += number[i];//initializes sum to number array
}//end enhanced for loop