2016-04-08 20 views
0

Her şey boole yöntem true döndürür zaman, doğru iş gibi görünüyor.sabitleme İstisna benim koduyla

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 
at FunArrays.main(FunArrays.java:15 

eksik ya da benim koduyla bakan am Ne: kullanıcı aşağıdaki hatayı alırsınız 10 numara girdikten sonra Ancak, ne zaman, yanlış sınıyor musun?

İşte benim kodudur:

import java.util.Scanner; 

public class FunArrays { 

public static void main(String[] args) { 
     Scanner input = new Scanner (System.in); 

     System.out.println("Please enter ten numbers...."); 

      int [] userArray = new int [9]; 

     for(int b = 0; b < 10 ; b++){ 
      userArray [b] = input.nextInt(); 
     } 

      boolean lucky = isLucky(userArray); 
       if (lucky){ 
         sum(userArray); 
    } else 
     sumOfEvens(userArray); 

} 



public static boolean isLucky(int [] numbers){ 

    for (int i = 0; i <= numbers.length; i++){ 
     if (numbers[i]== 7 || numbers[i] == 13 || numbers[i] == 18){ 
      return true; 

     } 

    } 
    return false; 

} 



public static void sum(int [] numbers){ 
    int sum = 0; 
    for (int x = 0; x <= numbers.length -1; x++){ 
     sum += numbers[x]; 

    } 
    System.out.println(sum); 
} 

public static void sumOfEvens(int [] numbers){ 
    int evens = 0; 
    for (int y = 0; y <= numbers.length -1; y++){ 
     if (numbers[y] % 2 == 0){ 
      evens += numbers[y]; 
     } 
    } 
    System.out.println(evens); 
} 

} 
+0

usersArray uzunluğu 9 uzunlukta bir dizi 10 numara saklamak için çalışıyoruz (0: Burada

int [] userArray = new int [9]; 

Dizileri üzerinde iyi bir okuma olduğunu ... 8) - ama senin döngü 0'dan 9'a çıkıyor. Yani b 9 olduğunda, dizinin sınırları dışındasın. – matmo

+0

Zihnin dizide tutun – Subhiksh

+0

9 elemanlı diziyi oluştururken '0-indexed' vardır. Bu, her programcının sahip olduğu ve deneyimleyeceği şeylerden biri. :) –

cevap

0

Sen 10 numara giriyorsunuz fakat dizi sadece 9 lekeler var.

int [] userArray = new int [10]; 
0
int [] userArray = new int [9]; 

    for(int b = 0; b < 10 ; b++){ 
     userArray [b] = input.nextInt(); 
    } 

bunu değiştir dizi boyutunda 9 az 9 daha olmalı bu b şıkkında ve 0 ila 9 (10 olgu) adresinin döngü artım b (index 0 dan endeksi 8) 'dir senin döngüsün.

Yani bu kod tarafından yerine olabilir: Eğer kullanıcıdan 10 değer kabul eden bu yana

int maxInput = 9; 
int [] userArray = new int [maxInput]; 

    for(int b = 0; b < maxInput ; b++){ 
     userArray [b] = input.nextInt(); 
    } 
+0

Ben aşağıdaki hata iletisini sorunları düzeltmek zaman: Şimdi orada FunArrays.main de FunArrays.isLucky (FunArrays.java:32) (FunArrays.java:18) 10: "ana" java.lang.ArrayIndexOutOfBoundsException dizisindeki İstisna boole yöntemi ile ilgili bir sorun, yalnızca yanlış olduğunda. –

+0

İyi bir egzersiz gibi görünüyor :) "isLucky" işlevinin "for" durumunun düzeltilmesi için cevaplarımızı anlamalısınız. .. – boly38

+0

Ve "sum" ve "sumOfEvens" fonksiyonları için de aynı. – boly38

0

Sen 9.

Kullanım int[] userArray = new int[10];

İlgili konular