我对java还很陌生,所以这可能是一个基本问题。我试图使用随机java.util和nextInt在用户输入指定的范围内创建一个随机数,然后将其转换为字符,然后存储在数组中;
gridCells[x][y] = (char)(r.nextInt(numberOfRegions) + 'a');
然而,因为我希望nextInt使用用户输入,尽管我控制了值的范围,但我猜测错误是因为nextInt认为numberOfRegions可能是0?
// Map Class
import java.util.Random;
public class map
{
// number of grid regions
private int numberOfRegions;
private boolean correctRegions = false
// grid constants
private int xCord = 13; // 13 so the -1 makes 12 for a 12x12 grid
private int yCord = 13;
// initiate grid
private int[][] gridCells = new int[xCord][yCord];
Random r = new Random();
map() { }
// ask for number of regions
public void regions()
{
keyboard qwerty = new keyboard(); // keyboard class
while(correctRegions = false)
{
System.out.print("Please enter the number of regions: ");
numberOfRegions = qwerty.readInt();
if(numberOfRegions < 2) // nothing less then 2 accepted
{
correctRegions = false;
}
else if(numberOfRegions > 4) // nothing greater then 4 accepted
{
correctRegions = false;
}
else
{
correctRegions = true;
}
}
}
// fills the grid with regions
public void populateGrid()
{
for(int x =0; x<gridCells[x].length-1; x++) // -1 to avoid outofboundsexception error
{
for(int y =0; y<gridCells[y].length-1; y++)
{
gridCells[x][y] = (char)(r.nextInt(numberOfRegions) + 'a');
}
}
}
public void showGrid()
{
for(int x=0;x<gridCells[x].length-1; x++)
{
for(int y=0; y<gridCells[x].length-1; y++)
{
System.out.print(gridCells[x][y] + " ");
}
System.out.println();
}
}
}
public void populateGrid()
{
for(int x =0; x<gridCells[x].length-1; x++) // -1 to avoid outofboundsexception error
{
for(int y =0; y<gridCells[y].length-1; y++)
{
gridCells[x][y] = (char)(r.nextInt(numberOfRegions) + 'a');
}
}
}
这是伪造的,要么你做index < array.length
,要么做index <= array.length-1
。
index < array.length-1
很可能不是你想要的。
此外,如果您遇到编译错误,可能是因为您没有初始化numberOfRegions。通常,这不是一个错误,而是一个警告,但在这种情况下,编译器可能会发出错误。尝试
private int numberOfRegions = 0;
您必须知道java.util.random是如何工作的。
Random r = new Random();
int number = r.nextInt(numberOfRegions);
这将产生一个从零(0)到ur-numberRegions的整数。要从生成的随机数的可能范围中排除零,请执行类似的操作
int number = 1 + r.nextInt(numberOfRegions);
这样,可以生成的最小数量是1个
int number = 2 + r.nextInt(numberOfRegions);
这样,可以生成的最小数量是2个
...and so on
我发现了一些东西:
您的while
条件是一项任务:
while(correctRegions = false)
你应该写:
while(correctRegions == false) // == is a boolean operator, = is an assignment