import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class n00686349
{
public static void main(String args [])throws FileNotFoundException
{
String control;
FileInputStream fis = new FileInputStream("C:/Users/Steven Fowler/Desktop/data.txt");
Scanner scanner = new Scanner(fis);
vehicle one = new vehicle();
while(scanner.hasNextLine())
{
control = scanner.nextLine();
if (control.equals("vehicle") == true)
{
new vehicle();
one.setOwner(control);
}
else if (control.equals("car") == true)
{
System.out.println("You doing alright");
}
else if (control.equals("truck") == true)
{
System.out.println("You doing alright");
}
else if (control.equals("bicycle") == true)
{
System.out.println("You doing alright");
}
else if (control.equals("american car") == true)
{
System.out.println("You doing alright");
}
else if (control.equals("foreign car") == true)
{
}
}
scanner.close();
}
public class vehicle
{
private String ownersName;
private String address;
private String phone;
private String email;
public vehicle()
{
this.ownersName = ("none");
this.address = ("none");
this.phone = ("none");
this.email = ("none");
}
public void setOwner (String ownersName)
{
this.ownersName = ownersName;
}
public void setAddress (String address)
{
this.address = address;
}
public void setPhone (String phone)
{
this.phone = phone;
}
public void setEmail (String email)
{
this.email = email;
}
public String ownersName()
{
return ownersName;
}
public String address ()
{
return address;
}
public String phone ()
{
return phone;
}
public String email()
{
return email;
}
}
class car extends vehicle
{
private boolean convertible;
private String color;
public car()
{
convertible = false;
color = ("none");
}
public void setConvertible (boolean convertible)
{
this.convertible = convertible;
}
public void setColor (String color)
{
this.color = color;
}
public boolean convertible ()
{
return convertible;
}
public String color ()
{
return color;
}
}
上面是我的一个类的代码,它逐行读取文件中的输入并将信息处理成一个对象(Not complete still building)。我明白为什么你会得到这个错误信息。您无法在不首先创建对象,分配对象的引用,然后调用对象方法的情况下访问实例方法。每当我尝试创建一个新对象时,就会在第16行和第23行弹出此错误。所以我一直在搞这个,如果我把班级车改为静态,那就行了。所以我的问题是:将类更改为静态,将所有变量更改为静态,这就是它的工作原理吗?对此有什么影响?(使一个类静态创建实例)并且我在我的车辆类中使用this.variable然后尝试扩展该类导致此问题?我对使用this关键字并不十分熟悉。
由于
答案 0 :(得分:1)
使Vehicle内部类静态不是什么大问题。它只是意味着内部类没有任何方法可以引用外部类中的东西,但是你还没有这样做。
使Vehicle的所有成员静态意味着所有车辆共享这些属性的一个副本。例如,所有车辆都拥有相同的所有者。
我可能会做的是将main
方法中的所有内容移动到新方法。 (称之为run
或类似的东西。)
然后将main更改为:
public static void main(String[] args) {
n00686349 obj = new n00686349();
obj.run();
}
答案 1 :(得分:1)
让你的车辆类静态如下:
public static class vehicle
答案 2 :(得分:0)
您不能将新车辆()分配给one
参考。改变这个
new vehicle();
one.setOwner(control);
到
one = new vehicle();
one.setOwner(control);