你如何改变阵列的每个部分?

时间:2015-03-27 03:21:50

标签: java arrays

所以这是我现在的代码。

public static void main(String[] args) {
    Scanner keyboard = new Scanner (System.in);
    int set[] = new int[5];
    set[0] = (int)(Math.random()*6)+1;
    set[1] = (int)(Math.random()*6)+1;
    set[2] = (int)(Math.random()*6)+1;
    set[3] = (int)(Math.random()*6)+1;
    set[4] = (int)(Math.random()*6)+1;

    System.out.println("Your current dice: " + set[0] + " " +  set[1] + " " + set[2] + " " + set[3] + " " +set[4] );
    System.out.println("Select a die to re-roll (-1 to keep remaining dice):");
    int ask = keyboard.nextInt();

此后,如果用户键入1,则set[1]应更改为零,因此它变为x0xxx,如果用户还希望更改第3个数字,那么它应为{ {1}}。

顺便说一句,x0x0x只是生成的随机数。

我该如何继续这样做?它必须总共最多5次。

2 个答案:

答案 0 :(得分:2)

以下是完成您想要/需要的基本步骤。

  1. 阅读用户输入(使用Scanner或其他内容)。
  2. 验证用户输入是否为数组的有效索引(即,输入是一个值介于0和5之间的数字)。您可以将其存储在变量int x
  3. 将输入的索引用户内的数组元素的值更改为0(或您想要/需要的值)。这会产生类似set[x] = ...的内容(将...改为适当的值)。

答案 1 :(得分:0)

你多次做一件事的方式是循环。关键是要学习使用哪种循环。

对于应用于每个元素的内容,请使用for-each循环。对于需要完成的事情,直到某些条件使用while循环。对于在某些条件变为false之前需要完成的事情,请使用do-until循环。

你做的事情是一样的,进入循环块。你正在“工作”的东西发生了变化,这是一个循环在每次“遍历”循环块时设置的变量。

在你的情况下

for (Die die : dice) {
  die.roll();
}

类Die看起来像

public class Die {

  private int value;

  public Die() {
    roll();
  }

  public void roll() {
    value = (int)(Math.random()*6)+1;
  }

  public int getValue() {
    return value;
  }
}

然后,因为你需要“订单”(第一,第二,第三等......)使用一个可以包含对象的数据结构(比如你的死)

List<Die> dice = new ArrayList<>();

阵列很好,你需要知道如何使用它们;但是,通过不使用它们,有更好的方法来解决大多数问题。

当你真的无法使用它们时,使用for循环来遍历每个数组索引。