【问题标题】:"Incompatible types: String cannot be converted to Person"?“不兼容的类型:字符串不能转换为人”?
【发布时间】:2015-09-07 23:28:46
【问题描述】:

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

  1. 银行名称(字符串)
  2. accountNumber(整数)
  3. 签名者(一个
  4. coSigner(一个个人

它还必须有一个 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 变量 signer 和 coSigner 值的代码,我收到一条错误消息,提示“不兼容的类型:字符串无法转换为 Person”。因此,我也在 String print 语句中收到该错误。我怎样才能解决这个问题?我做错了什么?

【问题讨论】:

  • 类的构造函数在哪里??

标签: java variables methods


【解决方案1】:

你做不到。

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

        //...
    }
}

【讨论】:

    【解决方案2】:

    这是错误消息准确告诉您问题所在的情况

    “不兼容的类型:字符串不能转换为人”?

    你的问题来了

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-04
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多