【问题标题】:How can I add an object into vector?如何将对象添加到向量中?
【发布时间】:2014-02-27 18:30:03
【问题描述】:

问题是—— 给定航班的详细信息作为输入,创建对象Ticketvector。请注意,票证应以与输入相同的顺序出现在vector 中。 详细信息已作为String[] 提供。数组中的每一项都对应一张票,并具有以下空格分隔的详细信息:Origin, destination, departure, arrival, amount

我尝试关注,但由于我是新手,而且我是第一次这样做,所以我无法找到自己的方式。

   import java.util.Vector;

    public class FlightTickets {

        String origin;
        String destination;
        String departure;
        String arrival;
        String amount;
        Vector v = new Vector();

        public FlightTickets(String origin, String destination, String departure, String arrival, String amount) {
            this.origin = origin;
            this.destination = destination;
            this.departure = departure;
            this.arrival = arrival;
            this.amount = amount;
        }

        public static void main(String[] args) {
            FlightTickets ticket = new FlightTickets("Caledonia", "South Korea", "10:00", "5:00", "15000");
            v.add(ticket);
        }
    }

【问题讨论】:

标签: java object vector add


【解决方案1】:

试试这个:

public static void main(String[] args) {           
    FlightTickets ticket = new FlightTickets("Caledonia", "South <bKorea", "10:00", "5:00", "15000");
    ticket.v.add(ticket);
}

请记住,您不能从静态方法访问非静态变量。 顺便说一句,由于 Vector 类是泛型类型,因此最好像这样定义“v”:

Vector<TestClass> v = new Vector<TestClass>();

作为对您评论的回应,我提供了一个相当完整的实现以获取更多详细信息:

import java.util.Iterator;
import java.util.Vector;

public class TestClass {

    String Origin;
    String destination;
    String departure;
    String arrival;
    String amount;
    Vector<TestClass> v = new Vector<TestClass>();

    public TestClass(String Origin, String destination, String departure, String arrival, String amount) {
        this.Origin = Origin;
        this.destination = destination;
        this.departure = departure;
        this.arrival = arrival;
        this.amount = amount;
    }

    public static void main(String[] args){
        TestClass ticket = new TestClass("Caledonia", "South Korea", "10:00", "5:00", "15000");
        ticket.v.add(ticket);
        Iterator<TestClass> it = ticket.v.iterator();
        while(it.hasNext())
            System.out.println(it.next().Origin);
    }
}

【讨论】:

  • 感谢您的帮助,我尝试了所有解决方案,但没有人给我输出。我认为代码中可能还有其他问题
  • 我不知道为什么,但它给出了从迭代器中删除参数类型的错误。
  • 1) 错误是什么?2) 哪个参数和位置? (你是说起源吗?)
  • 在这个语句中-Iterator it = ticket.v.iterator();就是说要删除Testclass。
  • 您是否将我的代码复制并粘贴到名为 TestClass.java 的文件中?
【解决方案2】:

如果不使用 FlightTickets 的对象,您将无法在静态函数(包括 main)中访问 FlightTickets 的成员变量。

您应该执行以下操作:

f.v.add(ticket);

这不是标准做法,许多程序员通过抽象内部使用的数据结构来使用其他技术。您可以在 FlightTickets 中创建如下函数:

public void addTickets(FlightTicket ticket)
{
    this.v.add(ticket);
}

您设计的类也令人困惑,因为 FlightTicket 有一个向量,您在其中存储 FlightTicket 的集合。可能您可能想考虑以更好的方式设计它。

【讨论】:

    【解决方案3】:

    一个简单的解决方法是将 Vector v = new Vector(); 移动到 main 方法中。这导致:

    import java.util.Vector;
    public class FlightTickets {
        String origin;
        String destination;
        String departure;
        String arrival;
        String amount;
    
        public FlightTickets(String origin, String destination, String departure, String arrival, String amount){
            this.origin = origin;
            this.destination = destination;
            this.departure = departure;
            this.arrival = arrival;
            this.amount = amount;
        }
    
        public static void main(String[] args){
            FlightTickets ticket = new FlightTickets("Caledonia", "South Korea", "10:00", "5:00", "15000");
            Vector v = new Vector();
            v.add(ticket);
        }
    }
    

    正如@obicere 在 cmets 中提到的,您最好使用ArrayListList。 @kakarot 回答了代码不起作用的真正原因,您无法从静态方法访问非静态字段。

    【讨论】:

    • 谢谢,我试过了,但没有输出。我认为可能还有其他错误。
    • 当然没有输出;什么都没有打印出来!如果您想这样做,请使用System.out.println(v)(取决于您要打印的内容)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多