7

这是我的代码:

public class countChar {

    public static void main(String[] args) {
        int i;
        String userInput = new String();

        userInput = Input.getString("Please enter a sentence");

        int[] total = totalChars(userInput.toLowerCase());

        for (i = 0; i < total.length; i++);
        {
            if (total[i] != 0) {
                System.out.println("Letter" + (char) ('a' + i) + " count =" + total[i]);
            }
        }
    }

    public static int[] totalChars(String userInput) {
        int[] total = new int[26];
        int i;
        for (i = 0; i < userInput.length(); i++) {
            if (Character.isLetter(userInput.charAt(i))) {
                total[userInput.charAt(i) - 'a']++;
            }
        }
        return total;
    }
}

该程序的目的是向用户询问一个字符串,然后计算每个字符在该字符串中的使用次数。

当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入一个字符串,但是在我提交字符串并按 OK 后,我得到一个错误,说

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26
at countChar.main(countChar.java:14)

我不完全确定问题是什么或如何解决它。

4

4 回答 4

18
for ( i = 0; i < total.length; i++ );
                                    ^-- remove the semi-colon here

使用这个分号,循环循环直到i == total.length,什么也不做,然后你认为是循环的主体被执行。

于 2013-08-31T15:52:01.337 回答
9
for ( i = 0; i < total.length; i++ ); // remove this
{
    if (total[i]!=0)
        System.out.println( "Letter" + (char)( 'a' + i) + " count =" + total[i]);
}

for 循环循环直到i=26(其中 26 是total.length),然后if执行你的,越过数组的边界。删除循环;末尾的。for

于 2013-08-31T15:52:09.647 回答
1

这是 java 中数组的减长的很好的例子,我在这里给出了两个例子

 public static int linearSearchArray(){

   int[] arrayOFInt = {1,7,5,55,89,1,214,78,2,0,8,2,3,4,7};
   int key = 7;
   int i = 0;
   int count = 0;
   for ( i = 0; i< arrayOFInt.length; i++){
        if ( arrayOFInt[i]  == key ){
         System.out.println("Key Found in arrayOFInt = " + arrayOFInt[i] );
         count ++;
        }
   }

   System.out.println("this Element found the ("+ count +") number of Times");
return i;  
}

这上面 i < arrayOFInt.length; 不需要将数组长度减一;但是如果你我 <= arrayOFInt.length -1; 是必要的其他明智的 arrayOutOfIndexException 发生,希望这会对你有所帮助。

于 2017-01-14T09:22:26.813 回答
-2
import java.io.*;
import java.util.Scanner;
class ar1 {
    public static void main(String[] args) {
        //Scanner sc=new Scanner(System.in);
        int[] a={10,20,30,40,12,32};
        int bi=0,sm=0;
        //bi=sc.nextInt();
        //sm=sc.nextInt();
        for(int i=0;i<=a.length-1;i++) {
            if(a[i]>a[i+1]) 
                bi=a[i];

            if(a[i]<a[i+1])
                sm=a[i];
        }
        System.out.println("big"+bi+"small"+sm);
    }
}
于 2017-07-14T15:12:28.280 回答