编译一个Java中random类的简单程序
时间: 2024-05-09 16:16:58 浏览: 163
好的,我可以帮您编写一个Java中使用random类的简单程序,以下是代码:
```java
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
Random random = new Random();
int num = random.nextInt(100);
System.out.println("生成的随机数为:" + num);
}
}
```
这段代码会生成一个0到99之间的随机数,并输出结果。请问还有其他问题吗?
相关问题
java编译一个扫雷游戏程序
以下是一个简单的Java扫雷游戏程序的代码示例:
```java
import java.util.Random;
import java.util.Scanner;
public class Minesweeper {
private char[][] board;
private boolean[][] revealed;
private int rows, cols;
private int remaining;
public Minesweeper(int rows, int cols, int mines) {
this.rows = rows;
this.cols = cols;
this.board = new char[rows][cols];
this.revealed = new boolean[rows][cols];
this.remaining = rows * cols - mines;
// initialize board with empty cells
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
board[i][j] = '.';
revealed[i][j] = false;
}
}
// randomly place mines on the board
Random random = new Random();
int count = 0;
while (count < mines) {
int i = random.nextInt(rows);
int j = random.nextInt(cols);
if (board[i][j] != '*') {
board[i][j] = '*';
count++;
}
}
}
public void play() {
Scanner scanner = new Scanner(System.in);
while (true) {
// print board
System.out.println(getBoardString());
// get user input
System.out.print("Enter row and column (e.g. 3 4): ");
int row = scanner.nextInt() - 1;
int col = scanner.nextInt() - 1;
// check if cell is valid and not already revealed
if (row < 0 || row >= rows || col < 0 || col >= cols) {
System.out.println("Invalid cell, try again.");
continue;
}
if (revealed[row][col]) {
System.out.println("Cell already revealed, try again.");
continue;
}
// reveal cell and update remaining count
revealed[row][col] = true;
if (board[row][col] == '*') {
System.out.println("Boom! Game over.");
return;
} else {
remaining--;
if (remaining == 0) {
System.out.println("Congratulations! You win!");
return;
}
}
// update adjacent cells
if (board[row][col] == '.') {
updateAdjacentCells(row, col);
}
}
}
private void updateAdjacentCells(int row, int col) {
int[][] directions = {
{-1, -1}, {-1, 0}, {-1, 1},
{0, -1}, {0, 1},
{1, -1}, {1, 0}, {1, 1}
};
for (int[] dir : directions) {
int r = row + dir[0];
int c = col + dir[1];
if (r >= 0 && r < rows && c >= 0 && c < cols && board[r][c] == '*') {
board[row][col]++;
}
}
}
private String getBoardString() {
StringBuilder sb = new StringBuilder();
sb.append(" ");
for (int j = 0; j < cols; j++) {
sb.append(j + 1);
}
sb.append("\n");
for (int i = 0; i < rows; i++) {
sb.append((char) ('A' + i)).append(" ");
for (int j = 0; j < cols; j++) {
if (revealed[i][j]) {
sb.append(board[i][j]);
} else {
sb.append(".");
}
}
sb.append("\n");
}
return sb.toString();
}
public static void main(String[] args) {
Minesweeper game = new Minesweeper(8, 8, 10);
game.play();
}
}
```
这个程序使用了一个二维字符数组来表示扫雷的棋盘,其中`.`表示未翻开的空格,`*`表示地雷,数字表示该格周围地雷的数量。使用一个二维布尔数组来表示哪些格子已经被翻开了。程序会随机放置指定数量的地雷,然后让用户逐步翻开格子,直到所有非地雷格子都被翻开为止。如果翻开了地雷格子,游戏结束。如果所有非地雷格子都被翻开了,用户获胜。
把类写在包中,编写一个Java程序(RandomDemo),在主方法中利用Math类的random()方法或Random类产生20个范围在0-20之间的非负整数,当产生的随机数小于5或大于15时抛出一个自定义异常(RangeException),捕获这个异常,并输出异常信息,否则输出这个随机数的值。
好的,我理解了你的要求。以下是代码实现:
首先,我们需要定义一个自定义异常类 RangeException,用于表示当随机数小于5或大于15时抛出的异常。代码如下:
```java
package com.example;
public class RangeException extends Exception {
public RangeException(String message) {
super(message);
}
}
```
然后我们编写主类 RandomDemo,代码如下:
```java
package com.example;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 20; i++) {
int num = random.nextInt(21);
try {
if (num < 5 || num > 15) {
throw new RangeException("The number is out of range!");
} else {
System.out.println(num);
}
} catch (RangeException e) {
System.out.println(e.getMessage());
}
}
}
}
```
在主方法中,我们使用了 Random 类的 nextInt() 方法来产生一个范围在 0 到 20 之间的随机整数。然后,我们使用 try-catch 块来捕获 RangeException 异常。如果随机数小于 5 或大于 15,我们就抛出自定义异常,否则就输出随机数的值。
现在,我们可以编译并执行这个程序。运行结果会随机产生20个数字,并且如果随机数小于5或大于15时,会输出异常信息。
阅读全文