Java代码1+问题

时间:2017-08-17 16:41:55

标签: java arrays random int

Java代码问题。

import java.util.Random;

public class arrayTable {
public static void main (String[] args) {
    System.out.println("Index\t + Value");
    int Array[] = new int[10];

    Random Object = new Random();
    int Values;

    // Assigning random values to each element of array

    for(int i=0; i<Array.length;i++) {
        Values= (1+Object.nextInt(50));
        Array[i] = Values;
    }

    for(int j=0;j<Array.length;j++) {
        System.out.println(j + "\t" + Array[j]);
      }

    }
}

这里使用这个代码我在对象旁边写了(1+)所以索引应该从1开始,但是当我运行代码总是从索引0开始,如果我输入2+或者无关紧要3+ pr无论如何。任何人都可以帮助指出代码的问题。

提前谢谢你。

1 个答案:

答案 0 :(得分:3)

  

我在对象旁边写了(1+)所以索引应该从1开始

您在旁边写了1+而不是索引

所以,你在做的是:

array[0] = 50 + 1;

而不是:

array[0 + 1] = 50;

如果你想从索引1开始,你应该在这里写一下:

Array[i + 1] = Values;

但是,当您进入for循环时,您可能遇到ArrayIndexOutOfBoundsException,因此,更好的想法是:

for(int i=1; i<Array.length;i++) { //Look the "i" was initialized with 1 and not with 0.

记住:阵列从0索引开始

如果你想“跳过”第一个元素,那么对for循环的上述修改应该有效,但如果你想让它从1运行到10那么它就是不好的主意,因为它应该从09

您还应该注意遵循Java命名约定:

  • firstWordLowerCaseVariable
  • firstWordLowerCaseMethod()
  • FirstWordUpperCaseClass
  • ALL_WORDS_UPPER_CASE_CONSTANT

并始终如一地使用它们,这将使您和我们更容易阅读和理解您的代码。

另外,尽量不要将类/变量命名为Java类名称:

ObjectArrayList等可能是错误的选择,同样object小写会是一个坏主意,因为它不是@nicomp建议的描述在下面的评论

  

但是当我输入数组[i + 1]时它仍会从索引0打印出来,如果例如我在哪里做骰子我希望它从索引1开始,是否有办法做到这一点?

我认为您没有更改for(int j=0;j<Array.length;j++) {循环,从1

开始

制作骰子我会:

  • 使用6个插槽(从0开始)创建数组
  • 如下所示填充(1 - 6)(在for循环内):

    dice[0] = 1;
    dice[1] = 2;
    ...
    dice[5] = 6;
    
    //Example of for loop
    for (int i = 0; i < dice.length; i++) {
        dice[i] = i + 1;
    }
    
  • 获取一个名为random的随机数(0-5之间)

  • 获取位置random
  • 的数组值

例如:

random = 3;
//dice[random] = 4;
System.out.println(dice[random]);