如何将变量传递到方法-java

wi3ka0sx  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(345)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

26天前关门了。
改进这个问题
我需要在另一个方法中使用来自一个方法的变量。代码如下:

public static void secondMain() {
        BufferedReader reader;
        var lines = new ArrayList<String>();
        var rooms = new ArrayList<Room>();

    try {
        reader = new BufferedReader(new FileReader("rooms.txt"));
        String line = reader.readLine();
        lines.add(line);
        while (line != null) {
            line = reader.readLine();
            lines.add(line);

        }

        reader.close();

        for (int i = 0; i < lines.size() - 1; i++){

            String[] words = lines.get(i).split(" ");
            var room = new Room();
            room.roomNum = Integer.parseInt(words[0]);
            room.roomType = (words[1]);
            room.roomPrice = Double.parseDouble(words[2]);
            room.hasBalcony = Boolean.parseBoolean(words[3]);
            room.hasLounge = Boolean.parseBoolean(words[4]);
            room.eMail = (words[5]);
            rooms.add(room);    

            }

这里是需要使用的地方:

public static void reserveRoom() {
        // TODO Auto-generated method stub

    String choice = "";

    do {
secondMain();
        System.out.println("\n-- ROOM RESERVATION --");
        System.out.println("Please enter the room number you wish to reserve");
        System.out.println("Q - Quit");
        Room selectedRoom = null;
         var searchRoomNum = input.nextInt();
        for(int i = 0; i < rooms.size(); i++){                 
              if(rooms.get(i).roomNum == searchRoomNum){
                  selectedRoom = rooms.get(i);            
                    System.out.println("Room Number: " + selectedRoom.roomNum);
                    System.out.println("Room Type: " + selectedRoom.roomType);
                    System.out.println("Room Price: " + selectedRoom.roomPrice);
                    System.out.println("Balcony: " + selectedRoom.hasBalcony);
                    System.out.println("Lounge: " + selectedRoom.hasLounge);
                    System.out.println("Email: " + selectedRoom.eMail);
                    System.out.println("-------------------");
              }
         }

    }

我当前的错误在for循环中,我正在针对数组测试条件。”无法解析文件室”。

wa7juj8i

wa7juj8i1#

而不是 public static void secondMain ,你能做到的 public static ArrayList<Room> secondMain 在secondmain的末尾: return rooms .
reserveRoom 方法:调用secondmain方法时: ArrayList<Room> rooms = secondMain(); 现在你应该可以使用 rooms 内部 reserveRoom 方法

euoag5mw

euoag5mw2#

如果你想访问 roomssecondMain() 中的方法 reserveRoom() ,你应该把它从 secondMain() 当你打电话的时候。这可以通过更改方法的返回类型来实现 public static void secondMain() 成为 public static ArrayList<Room> secondMain() 然后在for循环之后 secondMain() 将所有房间添加到阵列列表后,应返回 rooms 打电话的人。这可以作为try-catch块之后的一条语句添加。

return rooms;

这样您就可以从 reserveRoom() . 打电话的线路

do {
secondMain();

应该变成:

do{
var rooms = secondMain();

这将允许您访问中的房间 reserveRoom()

相关问题