Java初学者:这是最佳实践吗(随机数和条件)?
我刚刚开始学习Java,我一直在玩弄一些想法。我已经写了下面的一小段代码,当运行它时,它会输出一个不同的房间。房间由一个介于1和3之间的随机整数决定。代码似乎工作得很好。然而,由于我是编程新手,我担心我可能误解了其中一个指导我工作的教程,并使用了一种低效的方式来完成它 有谁能告诉我,我是否在使用最佳实践来实现我想要的结果,并解释我可以做出的任何更改以使代码更好Java初学者:这是最佳实践吗(随机数和条件)?,java,string,if-statement,random,Java,String,If Statement,Random,我刚刚开始学习Java,我一直在玩弄一些想法。我已经写了下面的一小段代码,当运行它时,它会输出一个不同的房间。房间由一个介于1和3之间的随机整数决定。代码似乎工作得很好。然而,由于我是编程新手,我担心我可能误解了其中一个指导我工作的教程,并使用了一种低效的方式来完成它 有谁能告诉我,我是否在使用最佳实践来实现我想要的结果,并解释我可以做出的任何更改以使代码更好 import java.util.Random; public class Rooms { public static void
import java.util.Random;
public class Rooms {
public static void main(String[] args) {
Random random = new Random();
int roomNumber = random.nextInt(3) + 1;
String getRoom = "";
if (roomNumber == 1) {
getRoom = "Living Room";
} else if (roomNumber == 2) {
getRoom = "Kitchen";
} else if (roomNumber == 3) {
getRoom = "Bathroom";
}
System.out.println(getRoom);
}
}
感谢阅读。您只需将
房间
放入一个数组:
String[] rooms = { "Living Room", "Kitchen", "Bathroom" };
int roomNumber = random.nextInt(rooms.length);
System.out.println(rooms[roomNumber]);
Background:将
int
参数作为上限,返回一个介于0
和(但不包括)n之间的整数。在此处使用rooms.length
将允许您从数组中选择随机索引,而不会导致ArrayIndexOutOfBoundsException
您只需将房间
放入一个数组:
String[] rooms = { "Living Room", "Kitchen", "Bathroom" };
int roomNumber = random.nextInt(rooms.length);
System.out.println(rooms[roomNumber]);
Background:将
int
参数作为上限,返回一个介于0
和(但不包括)n之间的整数。在此处使用rooms.length
将允许您从数组中选择随机索引,而不会导致ArrayIndexOutOfBoundsException
您的代码很好。我唯一可以推荐的是:使用switch而不是multipleif's来处理else's会更快,但是当你随机运行一次时,这并不重要。如果需要,请选择该开关:
switch (roomNumber) {
case 1: getRoom = "Living Room";
break;
case 2: getRoom = "Kitchen";
break;
case 3: getRoom = "Bathroom";
break;
default: getRoom = "Error!";
break;
}
也可以使用列表或数组。数组也会加快速度,如果定义了元素数,请始终使用数组
String[] rooms = new String[]{"Living Room", "Kitchen", "Bathroom"};
getRoom = rooms[random.nextInt(rooms.length)];
你的代码很好。我唯一可以推荐的是:使用switch而不是multipleif's来处理else's会更快,但是当你随机运行一次时,这并不重要。如果需要,请选择该开关:
switch (roomNumber) {
case 1: getRoom = "Living Room";
break;
case 2: getRoom = "Kitchen";
break;
case 3: getRoom = "Bathroom";
break;
default: getRoom = "Error!";
break;
}
也可以使用列表或数组。数组也会加快速度,如果定义了元素数,请始终使用数组
String[] rooms = new String[]{"Living Room", "Kitchen", "Bathroom"};
getRoom = rooms[random.nextInt(rooms.length)];
如果您在调用
random.nextInt
时使用rooms.length
会更好。您能解释一下为什么使用rooms.length
会更好吗?@user1914525使用rooms.length
可以在不更改其余代码的情况下从数组中添加或删除。如果您使用rooms.length
在您调用random.nextInt
时。您能解释一下为什么使用rooms.length
更好吗?@user1914525使用rooms.length
允许您在不更改其余代码的情况下添加或删除数组。除了其他答案之外,我建议,作为一种风格,根据变量实际表示的内容命名变量。因此,我不使用“getRoom”,而是使用“roomName”,特别是因为“getRoom”是访问器方法的形式-第一次阅读此代码的人可能会在快速阅读时看到,作为getRoom(),它属于codereview.stackexchange.com。除了其他答案,我建议,作为一种风格,根据变量实际表示的内容命名变量。因此,我不使用“getRoom”,而是使用“roomName”,特别是因为“getRoom”是访问器方法的形式-第一次阅读此代码的人可能会快速阅读,将其视为getRoom(),它属于codereview.stackexchange.com。