【问题标题】:Adding to an int inside an array添加到数组内的 int
【发布时间】:2014-05-12 12:22:19
【问题描述】:

我一直尝试(多次)将 +1 添加到已经在一个数组中的一个数字(数字为零),但它不工作。

int i=0;//var for arrays
int [] countArray = new int[10];


/////////////////////
//__________ ask for values --------------

System.out.println("Hello please enter the number you would" +
        " like to be sorted separated by commas. \n" +
        "Example: \" 2,3,5,83,2 \".\t only use" +
        " commas. to separate numbers\n");


//-----------   save values -----
Scanner scan = new Scanner(System.in);

String allInput = scan.nextLine();//single string object with all input

String [] arr = allInput.split(",");//string array that holds all values
//as String
int [] numbersArray =new int[arr.length] ;//numbers

for ( String w: arr){//change Strings to Int
    numbersArray[i]= Integer.valueOf(arr[i]);
    i++;
}

//__必要时将计数中的所有数字设置为零

i=0;
for ( int x: countArray){//set all numbers to zero
countArray[i]=0;        

i++;

} //everything zeroed


i=0;

现在可以了,谢谢大家:

for (int x = 0; x < numbersArray.length; x++){


if (numbersArray[x] >=10 && numbersArray[x] <=100)  {  
countArray[(numbersArray[x]-1)/10]++;}
else{

    if (numbersArray[x] >=0 && numbersArray[x] <=10)
    {
 countArray[1 -1]++;}
}



}

【问题讨论】:

  • 一些系统操作系统和调试会有所帮助。
  • 将每个for 循环更改为简单的for (int i=0; i&lt;xxx.length; i++)。这样做没有任何好处,只会让代码更难阅读。
  • 另外,在最后一个 for 循环中,您可以简单地计算一些 int index = (numbersArray[i]-1)/10,并在验证它在 0 和 9 之间后,将其与 countArray[index]++ 一起使用。

标签: java arrays int


【解决方案1】:

不要使用 for-each 循环来编辑所有值,而是尝试使用标准 for 循环遍历它们。这是您所写内容的简写版本。试试这个:

for (int x = 0; x < numbersArray.length; x++){
    countArray[(numbersArray[x]-1)/10]++;
}

【讨论】:

  • 你应该从x=0开始,你应该在这个循环中使用(numbersArray[x]-1)/10
  • 您可能应该确保(numbersArray[x]-1)/10 是合法索引(即,介于0 和countArray.length-1 之间)。
  • 我使用了上面的循环,它解决了所有问题,谢谢。
  • 不客气,只是不要忘记 barak 的评论,确保检查边界。
猜你喜欢
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多