"不兼容的类型:字符串无法转换为Person"?

时间:2015-09-07 23:28:47

标签: java variables methods

对于类,我必须创建一个Java类定义来描述两个人的汽车贷款。它必须包含:

  1. bankName(字符串)
  2. accountNumber(整数)
  3. 签名者(
  4. coSigner(
  5. 它还必须有一个getInfo()方法,它连接bankName和accountNumber。

    以下是我在我试图创建的汽车贷款类中所拥有的内容,但我还必须创建另一个名为Person的类文件。

    CarLoan.java:

      package carloandemo.csc212hw01;
    
      public class CarLoan {
    
        public static void main(String[] args) {
            String bankName;
            bankName = "Chase";
            int accountNumber;
            accountNumber = 123456;
            Person signer;
            signer = "Rich";
            Person coSigner;
            coSigner = "Tim";
            String print = getInfo(bankName, accountNumber, signer, coSigner);
            System.out.println(print);
            //  System.out.println(getInfo() );
        }
    
        public static String getInfo(String bankName, int accountNumber, String signer, String coSigner) {
            return "The bank is " + bankName + " and the account number is " + accountNumber + ". " + "The signer of the loan is " + signer + " and the co-signer is " + coSigner + ".";
    
        }
    
      }
    

    Person.java:

    package carloandemo.csc212hw01;
    
    public class Person {
    
       public String signer;
       public String coSigner;
    
    }
    

    对于我分配Person变量签名者和coSigner值的代码,我收到一个错误,上面写着"不兼容的类型:字符串无法转换为Person"。因此,我也在String print语句中收到该错误。我怎样才能解决这个问题?我做错了什么?

2 个答案:

答案 0 :(得分:4)

你不能这样做。

Person signer;
signer = "Rich";

您将签名者定义为Person,并且您要分配String值。

首先,您必须将signer初始化为new Person(),然后您可以在新实例中分配变量。

例如:

Person signer = new Person();
signer.signer = "Rich";

您可以通过以下方式更改代码:

public class Person {
    public Person(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    private String name;
    private String surname;

    //getter
}

public class CarLoan {
    public static void main(String[] args) {
        String bankName;
        bankName = "Chase";
        int accountNumber;
        accountNumber = 123456;

        Person signer = new Person("Rich" , "xxx");
        Person cosigner = new Person("Tim" , "xxx");

        //...
    }
}

答案 1 :(得分:1)

这种情况下,错误消息正好告诉您问题是什么

  

“不兼容的类型:String无法转换为Person”?

你的问题在这里

Person signer;
signer = "Rich";

“Rich”是一个字符串,而不是一个人。

创建Person的新实例,然后将“Rich”分配给该实例的signer属性。

Person person = new Person();
person.signer = "Rich";

注意看这段代码:

Person coSigner;
coSigner = "Tim";
String print = getInfo(bankName, accountNumber, signer, coSigner);

您可能实际上并不希望Person对象包含signercoSigner属性。更好的定义可能是

public class Person {
    public String name;
    // Other things that describe a person here
}

如果您以这种方式更改Person,您的最终代码将是

Person signer = new Person();
signer.name = "Rich";
Person coSigner = new Person();
coSigner.name = "Tim";
String print = getInfo(bankName, accountNumber, signer, coSigner);