Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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_Object_Vector_Add - Fatal编程技术网

Java 如何将对象添加到向量中?

Java 如何将对象添加到向量中?,java,object,vector,add,Java,Object,Vector,Add,问题是- 将航班的详细信息作为输入,创建对象票证的向量。请注意,票据应以与输入相同的顺序出现在向量中。 详细信息已作为字符串[]提供。数组中的每个项目对应一张票证,并具有以下空格分隔的详细信息:起点、目的地、出发地、到达地、金额 我试着跟随,因为我是一个新手,这是我第一次这样做,我无法找到我的方式 import java.util.Vector; public class FlightTickets { String origin; String

问题是- 将航班的详细信息作为输入,创建对象
票证的
向量
。请注意,票据应以与输入相同的顺序出现在
向量中。
详细信息已作为
字符串[]
提供。数组中的每个项目对应一张票证,并具有以下空格分隔的详细信息:
起点、目的地、出发地、到达地、金额

我试着跟随,因为我是一个新手,这是我第一次这样做,我无法找到我的方式

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

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

您应该执行以下操作:

f.v.add(ticket);
这不是一种标准做法,许多程序员通过抽象内部使用的数据结构来使用其他技术。您可以在FlightTickets中创建函数,如下所示:

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

另外,您设计的类令人困惑,因为FlightTicket有一个向量,您正在其中存储FlightTicket的集合。也许你会想用一种更好的方式来设计它。

一个简单的解决方法是移动
Vector v=new Vector()在主方法内部。这导致:

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在评论中提到的,您最好使用或。代码不起作用的真正原因是@kakarot回答说,您不能从静态方法访问非静态字段。

尝试以下方法:

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

机票=新机票(“喀里多尼亚”,"South
v
是一个实例变量,但您正试图从
静态方法使用它。您应该阅读这篇文章,这将解释这是一个问题的原因。另外,为您的标识符使用Java命名约定。
Origin
应该是
Origin
l。例如,感谢您的帮助,我尝试了所有解决方案,但没有人是giv给我一个输出。我想代码中可能还有其他错误。我不知道为什么,但它给出了从迭代器中删除参数类型的错误。1)错误是什么?2)哪个参数和在哪里?(你是指来源吗?)在这个语句迭代器中,iterator it=ticket.v.iterator();这是说删除Testclass。你是否将我的代码复制并粘贴到名为Testclass.java的文件中了?谢谢,我尝试了这个方法,但没有输出。我想可能还有其他错误。当然没有输出;没有打印任何内容!如果你想这样做,请使用
System.out.println(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);
    }
}