Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java初学者:这是最佳实践吗(随机数和条件)?_Java_String_If Statement_Random - Fatal编程技术网

Java初学者:这是最佳实践吗(随机数和条件)?

Java初学者:这是最佳实践吗(随机数和条件)?,java,string,if-statement,random,Java,String,If Statement,Random,我刚刚开始学习Java,我一直在玩弄一些想法。我已经写了下面的一小段代码,当运行它时,它会输出一个不同的房间。房间由一个介于1和3之间的随机整数决定。代码似乎工作得很好。然而,由于我是编程新手,我担心我可能误解了其中一个指导我工作的教程,并使用了一种低效的方式来完成它 有谁能告诉我,我是否在使用最佳实践来实现我想要的结果,并解释我可以做出的任何更改以使代码更好 import java.util.Random; public class Rooms { public static void

我刚刚开始学习Java,我一直在玩弄一些想法。我已经写了下面的一小段代码,当运行它时,它会输出一个不同的房间。房间由一个介于1和3之间的随机整数决定。代码似乎工作得很好。然而,由于我是编程新手,我担心我可能误解了其中一个指导我工作的教程,并使用了一种低效的方式来完成它

有谁能告诉我,我是否在使用最佳实践来实现我想要的结果,并解释我可以做出的任何更改以使代码更好

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。