2012-09-27 101 views
1
public class ParallelArray { 

    public static Scanner sc = new Scanner(System.in); 

    public static void main(String[] args) { 
     char[] charArray = new char[5]; 
     int[] intArray = new int[5]; 
     char ch; 
     int count; 
     System.out.println("Enter 5 characters: "); 
     for (int i = 0; i < charArray.length; i++) { 
      charArray[i] = sc.next().charAt(0); 
     } 

     do { 
      System.out.println("Enter a character: "); 
      ch = sc.next().charAt(0); 
      int location = search(ch, charArray); 
      intArray[location]++; 
      System.out.println("Again? 1-yes, 0-no"); 
      count = sc.nextInt(); 
     } while (count == 1); 

     printBothLists(charArray, intArray); 
    } 

    public static void printBothLists(char[] charArray, int[] intArray) { 
     for (int i = 0; i < charArray.length; i++) { 
      System.out.println(charArray[i] + " - " + intArray[i]); 
     } 
    } 

    public static int search(char ch, char[] charArray) { 
     int count = -1; 
     for (int i = 0; i < charArray.length; i++) { 
      if (ch == charArray[i]) { 
       count = i; 
       return count; 
      } 
     } 
     return count; 
    } 
} 

如果我输入5个字符,a,b,我输入a,b,c,d,y。它将退出程序并给出错误:- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:-1

+0

'charArray [i] = sc.next()。charAt(0);'关注我。每次调用'sc.next()'都会使扫描器超越您输入的任何文本行。也许你需要一个更好的方式来分割String吗? (提示,提示) – Makoto

回答

2

你不检查,用户可以输入一个不存在的人物的可能性...

int location = search(ch, charArray); 
intArray[location]++; // <-- The index is invalid... 

你需要尝试访问该阵列之前作出检查...

int location = search(ch, charArray); 
if (location >= 0 && location < intArray.length) { 
    intArray[location]++; // <-- The index is invalid... 
} else { 
    System.out.println("'" + ch + "' does not exist"); 
} 
+0

谢谢。你是正确的先生.....我错过了那部分。 – piyush128k

相关问题