0

私は Java の学習を始めたばかりで、いくつかのアイデアで遊んでいます。私は、実行時に家の別の部屋を出力する次の小さなコードを書きました。部屋は、1 から 3 の値の間のランダムな整数によって決定されます。コードは問題なく動作するようです。ただし、私はプログラミングに慣れていないので、自分の作業を知らせるチュートリアルの 1 つを誤解し、それを完了するのに非効率的な方法を使用した可能性があるという懸念があります。

希望する結果を達成するためにベスト プラクティスを使用しているかどうか、またコードを改善するために変更を加えることができるかどうかを説明できる人はいますか?

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);

  }
}

これを読んでくれてありがとう。

4

2 に答える 2

5

roomsを配列に入れるだけです。

String[] rooms = { "Living Room", "Kitchen", "Bathroom" };
int roomNumber = random.nextInt(rooms.length);
System.out.println(rooms[roomNumber]);

背景: Random.nextInt(n)は引数を上限として取り、 nから (ただしnintは含まない)までの整数を返します。ここを使用すると、 .0rooms.lengthArrayIndexOutOfBoundsException

于 2012-12-19T02:11:05.373 に答える
0

あなたのコードは問題ありません。私が推奨できる唯一のことは、else で複数の if を使用する代わりに switch を使用する方が高速ですが、このランダムを 1 回実行すると、それは実際には問題になりません。必要に応じてそのスイッチ:

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)];
于 2012-12-19T02:12:16.973 に答える