我正在尝试在Java
中创建一个矩阵,该矩阵只会在空位置填充随机值。我正在尝试这些代码,但它不起作用。
我做了两个嵌套的for
循环,一个用于行,一个用于列。对于每个职位,我都会问0
(我不确定如何对其进行控制)以及它是否生成随机坐标并以格式打印( I,J)。 但始终打印0
。
public int[][] getRandomPosition(int matrixlength) {
int[][] grid = new int[matrixlength][matrixlength];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if (grid[i][j] == 0) {
grid[i][j] = (int) Math.random();
System.out.print(grid[i][j]);
return grid;
}
}
}
return null;
}
我知道如何解决手头的问题?
答案 0 :(得分:0)
Math.radnom()
返回的;@echo off
;;;;; rem start of the batch part ;;;;;
;
;for %%a in (/h /help -h -help) do (
; if /I "%~1" equ "%%~a" if "%~2" equ "" (
; echo compressing directory to cab file
; echo Usage:
; echo(
; echo %~nx0 "directory" "cabfile"
; echo(
; echo to uncompress use:
; echo EXPAND cabfile -F:* .
; echo(
; echo Example:
; echo(
; echo %~nx0 "c:\directory\logs" "logs"
; exit /b 0
; )
; )
;
; if "%~2" EQU "" (
; echo invalid arguments.For help use:
; echo %~nx0 /h
; exit /b 1
;)
;
; set "dir_to_cab=%~f1"
;
; set "path_to_dir=%~pn1"
; set "dir_name=%~n1"
; set "drive_of_dir=%~d1"
; set "cab_file=%~2"
;
; if not exist "%dir_to_cab%\" (
; echo no valid directory passed
; exit /b 1
;)
;
;break>"%tmp%\makecab.dir.ddf"
;
;setlocal enableDelayedExpansion
;for /d /r "%dir_to_cab%" %%a in (*) do (
;
; set "_dir=%%~pna"
; set "destdir=%dir_name%!_dir:%path_to_dir%=!"
; (echo(.Set DestinationDir=!destdir!>>"%tmp%\makecab.dir.ddf")
; for %%# in ("%%a\*") do (
; (echo("%%~f#" /inf=no>>"%tmp%\makecab.dir.ddf")
; )
;)
;(echo(.Set DestinationDir=!dir_name!>>"%tmp%\makecab.dir.ddf")
; for %%# in ("%~f1\*") do (
;
; (echo("%%~f#" /inf=no>>"%tmp%\makecab.dir.ddf")
; )
;makecab /F "%~f0" /f "%tmp%\makecab.dir.ddf" /d DiskDirectory1="%cd%" /d CabinetNameTemplate=%cab_file%.cab
;rem del /q /f "%tmp%\makecab.dir.ddf"
;exit /b %errorlevel%
;;
;;;; rem end of the batch part ;;;;;
;;;; directives part ;;;;;
;;
.New Cabinet
.set GenerateInf=OFF
.Set Cabinet=ON
.Set Compress=ON
.Set UniqueFiles=ON
.Set MaxDiskSize=1215751680;
.set RptFileName=nul
.set InfFileName=nul
.set MaxErrors=1
;;
;;;; end of directives part ;;;;;
大于或等于double
且小于0.0
。当您将其投放到1.0
时,它将被截断为int
。相反,您需要生成随机0
。此外,在完全填满网格之前,您不应该返回网格。 E.g:
int
答案 1 :(得分:0)
为什么它始终打印为零的原因是Math.random()
返回一个从0.0
到0.9
的数字,因此一旦你从{{{}返回结果1}}到Math.random()
,它总是会产生int
。
解决您的问题;您可以使用0
类并使用其nextInt
方法或使用以下公式:
Random
虽然我推荐前者,但你首先需要在外环之前创建一个grid[i][j] = (int)(Math.random() * (max - min) + min); // where min is the minimum value you want to generate and max is the max you want to generate (exclusive).
对象,即
Random
然后在您的Random randomGen = new Random();
区域内,您可以执行以下操作:
if
还有另一个Random#nextInt
重载,它允许您指定生成的随机数的边界。