【问题标题】:Type Mismatch: Cannot convert from Seat to String类型不匹配:无法从 Seat 转换为字符串
【发布时间】:2022-01-15 10:10:35
【问题描述】:

我正在尝试使用简单的数组和构造函数进行探索。我的目标是读取包含 7 组数据的文本文件。 (从下面的代码中可以看出,字符串、字符串、布尔等)但我遇到了问题。

我的预期结果是... 从文本文件中读取文件,并将该数据存储在一个 Array 中(不需要 ArrayList,因为我们知道它包含多少数据,每行 7 组数据,17 行数据),然后打印信息。我已经尝试使用方法和构造函数创建数组,以及读取文件并将正确的数据类型分配给数组字段,但我得到了错误。

“未解决的编译问题:类型不匹配:无法从 Seat 转换为 String。”

当我在下面得到构造函数的第二部分时,它应该与顶部的构造函数方法相关联,同时查看 Array 以便它知道在哪里存储数据,对吧?但我不确定为什么,除非我犯了错误。之前我已经成功构建了一个ArrayList,但是我发现读取数据很困难,并且如上所述,我不需要弹性Array,因为我知道数据量。

我还尝试更改初始构造方法的返回类型(在顶部)以及更改方法的名称以查看它是否正在查看正确的内容。数组真的很酷而且很有用,所以我很想知道我哪里出错了。我的代码如下。

import java.io.FileReader;
import java.util.Scanner;

public class seatReserveSystem2 {

    public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
        
        class Seat {
            
            String seatNum;
            String seatClass;
            boolean isWindow;
            boolean isAisle;
            boolean isTable;
            double seatPrice;
            String eMail;
            // Constructor
            Seat(String seatNum, String seatClass, boolean isWindow, boolean isAisle, boolean isTable, double seatPrice, String eMail) {
                this.seatNum = seatNum;
                this.seatClass = seatClass;
                this.isWindow = isWindow;
                this.isAisle = isAisle;
                this.isTable = isTable;
                this.seatPrice = seatPrice;
                this.eMail = eMail;
                
        }

    }
        
        String[] reserveSeats = new String[7];
            
        Scanner reader = new Scanner(new FileReader("seats.txt"));
        Scanner scan = new Scanner (System.in);
        int index = 0;
        
        while(reader.hasNext()) {
            String dataSeats = reader.nextLine();
            String[] dataSplit = dataSeats.split(" ");
            String seatNum = dataSplit[0];
            String seatClass = dataSplit[1];
            boolean isWindow = Boolean.parseBoolean(dataSplit[2]);
            boolean isAisle = Boolean.parseBoolean(dataSplit[3]);
            boolean isTable = Boolean.parseBoolean(dataSplit[4]);
            double seatPrice = Double.parseDouble(dataSplit[5]);
            String eMail = dataSplit[6];
            
            reserveSeats[index] = new Seat(seatNum, seatClass, isWindow, isAisle, isTable, seatPrice, eMail);
            index++;
        }
        
        
    }

}```

【问题讨论】:

    标签: java arrays string types mismatch


    【解决方案1】:

    reserveSeats 数组的类型是 String 而不是 Seat

    简单的解决办法是改变

    String[] reserveSeats = new String[7];
    

    Seat[] reserveSeats = new Seat[7];
    

    【讨论】:

    • 非常感谢,这么简单的东西我没看到。我一定把自己弄糊涂了。非常感谢!你已经回答了我的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2016-03-13
    • 2014-02-12
    相关资源
    最近更新 更多