为了账号安全,请及时绑定邮箱和手机立即绑定

整数不能取消引用

整数不能取消引用

慕后森 2023-06-04 17:49:30
我的 Java 简单代码有一些问题。我想做飞机航班搜索程序,但是当我将变量保留在参数下时,出现错误:Airlines.java:14: error: int cannot be dereferenced    String Parameters = flightNumber_go.getParameters();任何人都知道我如何解决这个问题?附言。对不起,我的英语不好import java.util.Scanner;class Airlines{    public static void main(String args[]) throws Exception{        Flight 524 = new Flight("Moskwa", "Londyn", 140);        Flight 135 = new Flight("Warszawa", "Wroclaw", 60);        Flight 141 = new Flight("Frankfurt", "Rzym", 95);        Scanner flightNumber = new Scanner(System.in);        System.out.println("Enter code of your flight: ");        int flightNumber_go = Integer.valueOf(flightNumber.nextLine());        String Parameters = flightNumber_go.getParameters();        System.out.println(Parameters);    }}class Flight{    String departures;    String arrival;    int price;    public Flight(String departures, String arrival, int price){        this.departures = departures;        this.arrival = arrival;        this.price = price;    }    public String getParameters(String ... args){        return "Lot z "+this.departures+" do "+this.arrival+" kosztuje "+this.price;    }}
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

首先,您误解了如何正确使用 asObject仅getParameters适用于当前对象,它不会搜索您创建的所有对象。如果要查找特定对象,则必须使用 aCollection来跟踪所有对象。


此外,您不应使用变量名来存储信息,而应将该信息作为整数存储在对象内部。


这是修改后的Flight类:


class Flight {

    private String departures;

    private String arrival;

    private int price;

    private int flightNum;


    public Flight(String departures, String arrival, int price, int flightNum){

        this.departures = departures;

        this.arrival = arrival;

        this.price = price;

        this.flightNum = flightNum;

    }

    public String getParameters(){

        return "Lot z "+this.departures+" do "+this.arrival+" kosztuje "+this.price;

   }

    public String getDepartures() {

        return departures;

    }

    public String getArrival() {

        return arrival;

    }

    public int getPrice() {

        return price;

    }

    public int getFlightNum() {

        return flightNum;

    }

    public void setDepartures(String departures) {

        this.departures = departures;

    }

    public void setArrival(String arrival) {

        this.arrival = arrival;

    }

    public void setPrice(int price) {

        this.price = price;

    }

    public void setFlightNum(int flightNum) {

        this.flightNum = flightNum;

    }


}

请注意,我添加了新参数,并使用标准的 getter 和 setter 来访问flightNum所有类变量。private


现在这里是修改后的Airlines类,它使用 anArrayList来存储Flights:


class Airlines {

    public static void main(String args[]) throws Exception{

        ArrayList<Flight> flights = new ArrayList<>();

        flights.add(new Flight("Moskwa", "Londyn", 140, 524));

        flights.add(new Flight("Warszawa", "Wroclaw", 60, 135));

        flights.add(new Flight("Frankfurt", "Rzym", 95, 141));


        Scanner flightNumber = new Scanner(System.in);

        System.out.println("Enter code of your flight: ");

        int flightNumber_go = Integer.valueOf(flightNumber.nextLine());

        Flight currentFlight = findFlight(flights, flightNumber_go);

        System.out.println(currentFlight.getParameters());


    }


    public static Flight findFlight(ArrayList<Flight> flights, int flightNum) {

        for (Flight f : flights) {

            if (f.getFlightNum() == flightNum) {

                return f;

            }

        }

        //If no flights are found

        return null;

   }

}

我添加了一个static名为的方法findFlight,该方法将ArrayList您flightNumber想要查找的作为参数,并返回相应的Flight. 这是使用一个简单的增强for循环完成的。null如果未找到航班,该方法将返回,可以修改它以返回您想要的默认情况下的任何内容。


示例运行:


输入您的航班代码:


135


从华沙到弗罗茨瓦夫的航班费用为 60


注意: 在您的情况下,使用 aMap将密钥存储为航班号和 asFlight值可能是有意义的,以确保密钥是唯一的,然后您本身就不需要flightNumber了Object。这ArrayList只是一种方法。


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信