2015-08-29 43 views
1

嗨每个人我都在练习Java语言。我面临这个问题。我是这种语言的初学者。我正在研究它,在我的拼贴画中。这是问题。我编译我的程序时出现错误(异常在线程“main”java.lang.ArrayIndexOutOfBoundsException)

“创建Java程序,将得到一个数字的总和。例如,5的输入会产生(1 + 2 + 3 + 4 + 5 = 15)”

我知道答案,但我试图用另一种方式解决它。在Java中开始

public class Sum11 { 
    static int i; 

    static int[] S = new int[5]; 
    static int j; 
    static int Sum = 0; 

    Sum11(int i,int S[],int j){ 
    this.S=S; 
    this.i=i; 
    this.j=j; 

    } 


    public static void main(String[] args){ 
     Scanner s1 = new Scanner(System.in); 
     for(i=1;i<=5;i++){ 
      System.out.println("Enter FIve Number"); 
      S[i]= s1.nextInt(); 
     } 
     for(int num : S){ 
      Sum = Sum+num; 
     } 
     System.out.println("The Result IS: "+Sum); 
    } 

} 

回答

1

数组的索引0,所以你的输入回路应该是:

System.out.println("Enter Five Numbers"); 
for(i=0;i<S.length;i++) { 
    S[i]= s1.nextInt(); 
} 
0

数组S被初始化为:

static int[] S = new int[5]; 

然后在从1循环到5的main函数:

for(i=1;i<=5;i++){ 
    System.out.println("Enter FIve Number"); 
    S[i]= s1.nextInt(); 
} 

试图在索引1,2,3,4来设定值,5. 但在Java阵列的被基于0的, 所以在这个例子中,索引应该是0,1,2 ,3,4.

你很容易出现这样的问题,因为S声明和初始化远离它实际使用的地方。 而你根本不需要它。 你可以实时计算, 总和不使用数组摸索:

int sum = 0; 
for(i=1;i<=5;i++){ 
    System.out.println("Enter FIve Number"); 
    sum += s1.nextInt(); 
} 
+0

谢谢你的人,帮助我很多 – Moayad

0

Java数组的开始索引是0 你必须到:

for(i=0;i<5;i++){ 
+0

谢谢二万您的帮助 – Moayad

1

与阵列的问题索引S[5]包含5个元素的数组是一个问题。 另一个问题是,我认为你误解了这个练习。

“创建Java程序,将得到一个数字的总和。例如,5的输入会产生(1 + 2 + 3 + 4 + 5 = 15)”

它请求“的一个的”,而不是“数小号”, ,似乎该输入是单数,例如数5.

的该溶液使用一个循环可以是用于例如:

int num = scanner.nextInt(); 
int sum = 0; 
for (int i = 1; i <= num; ++i) { 
    sum += i; 
} 

,还设有一个简单的公式数学解决方案:

int num = scanner.nextInt(); 
int sum = num * (num + 1)/2; 
相关问题