【发布时间】:2016-11-28 23:52:44
【问题描述】:
我正在尝试计算数组中整数的出现次数。我希望能够修改以下计算字符的循环...
for (int i = 0; i < chars.length; i++)
counts[chars[i] - 'a']++;
我尝试像这样修改它,但收到 ArrayIndexOutOfBoundsException 错误...
for (int i = 0; i < ints.length; i++)
counts[ints[i] - '0']++;
有什么想法吗?
我已经搜索了许多标题相似但不符合我需要的问题。
更新
这是我更新的代码。用户输入编号为 1 到 25 的整数。该程序应该使用另一个数组来计算这些整数的出现次数。我使用...更新了代码
counts[vals[i] - 1]++;
这允许程序编译。但是,count 的所有值都是零。
更新代码...
import java.util.Scanner;
class CountIntOccurs
{
private static final int MAX_NUM_OF_VALUES = 200;
public static void main ( String [] args )
{
Scanner in = new Scanner( System.in );
int[] vals = new int[MAX_NUM_OF_VALUES];
int numOfVals = 0;
// Read and store values
System.out.println( "Enter integers <= 25, one per line, hit control-Z when done: " );
while ( in.hasNextLine() )
{
vals[numOfVals] = Integer.parseInt( in.nextLine() );
++numOfVals;
}
// Close application if no values entered
if ( numOfVals == 0 )
System.exit( 0 );
// declare counts array
int[] counts = new int[25];
System.out.println( counts.length );
//??????? For each integer in the array, count it
for (int i = 0; i < counts.length; i++){
counts[vals[i] - 1]++;
}
//display values enetered
for ( int i = 0; i < numOfVals; ++i )
{
System.out.println( vals[i] );
}
//?????? display counted integers????
for ( int i = 0; i < counts.length; ++i )
{
System.out.println( counts[i] );
}
}
}
现在,我需要显示输入的整数的出现次数。如果我输入 1 1 2 2 2 结果应该是 2 3 0 0 0 ... 0 。
【问题讨论】:
-
你能出示
ints[i]的声明吗?它真的包含字符'0'到'9',还是整数0到9?我的猜测是后者,而且不一样。 -
ints 包含从 1 到 25 的随机整数值
-
是的,整数。而且代码是减去
'0',不是整数,是字符。 -
为什么
counts被初始化为numOfVals?如果用户输入 1 个值并且大于 1 怎么办? -
如果您的范围是 1 到 25,不应该是
counts = new int[25];吗? (如果是 0 到 25,则执行new int[26]。)