gpt4 book ai didi

将新值放入数组时,Java 数组越界

转载 作者:行者123 更新时间:2023-12-01 20:07:40 25 4
gpt4 key购买 nike

我在完成作业时遇到了一些问题。重点是创建一个程序,该程序将生成 0 到 1 之间的随机数,然后如果是正面,则将“h”保存到数组中的下一个可用空间,如果是尾部,则保存“s”。问题是,当我运行程序时,它给我一个错误“线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:2”,因为(我认为)它在到达数组末尾后继续运行,任何人都可以帮忙?

import java.util.Random;
public class CoinToss{

public int heads;
public int tails;
public int totalToss;
public int arraySize;
public int numOfTails = 0;
public int numOfHeads = 0;
public String [] array = new String[arraySize];

public CoinToss(int NumberOfTosses) {
arraySize = NumberOfTosses;
}

public int getHeads() {
return heads;
}

public int getTails() {
return tails;
}

public int totalTosses() {
return totalToss;
}

public void tossCoin() {
for (int i = 0; i <= arraySize; i++) {
double randomNumber = Math.random();

if (randomNumber < 0.5) {
array[arraySize] = "t";
numOfTails++;
} else {
for (int j = 0; j <= arraySize; j++) {
if (randomNumber >= 0.5) {
array[arraySize] = "h";
numOfHeads++;
}
}

}
}
}
}

和测试器类:

import java.util.Scanner;
public class CointTossTester {
public static void main (String[] args){
Scanner sc = new Scanner(System.in);

System.out.println("Number of tosses ");
int number = sc.nextInt();

CoinToss coin = new CoinToss(number);

coin.tossCoin();
System.out.println("Ight deez niggers be: " +coin.array);
}
}

谢谢!

最佳答案

array 的初始化更改为像其他所有声明一样的声明:

public String [] array;

然后,更改构造函数,使其正确初始化数组:

public CoinToss(int NumberOfTosses) {
arraySize = NumberOfTosses;
array = new String[arraySize];
}

您的for循环将从0arraySize(比最后一个索引多1,所以它不起作用) 。它应该改为 arraySize-1,这会将其更改为:

for (int i = 0; i < arraySize; i++) {

此外,您不应该使用 arraySize 来访问 array,而应该使用 i,它是循环变量,如下所示:

array[i] = "t";

现在,您不需要另一个循环,也不需要第二个条件,随机数要么低于 0.5,要么更高,您可以相应地放置它,如下所示:

if (randomNumber < 0.5) {
array[i] = "t";
numOfTails++;
} else {
array[i] = "h";
numOfHeads++;
}

最后,打印数组并不像将其与字符串连接那么简单,您应该遍历它或使用其他实用程序打印它(我个人喜欢 Arrays.toString 方法),例如这个:

System.out.println("Ight deez niggers be: " +Arrays.toString(coin.array));

这里有一个working example [注意:我将 main 方法放在 Coin 类上]

关于将新值放入数组时,Java 数组越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com