Java 我有三个错误;是预期的,还有其他的,没有if。我怎样修理它们?

Java 我有三个错误;是预期的,还有其他的,没有if。我怎样修理它们?,java,Java,我有3个错误。在第32行和第35行,我正在创建实例,它说;在每个实例的末尾都应该有一个else,而没有if。我怎样才能解决这个问题 public class BookTest { public static void main(String args[]) { double charge; double grandTotal= 0; String dataArray[][] = {{"NonFiction"

我有3个错误。在第32行和第35行,我正在创建实例,它说;在每个实例的末尾都应该有一个else,而没有if。我怎样才能解决这个问题

public class BookTest {

    public static void main(String args[])
    {
        double charge;
        double grandTotal= 0;           

        String dataArray[][] = {{"NonFiction", "Abraham Lincoln Vampire Hunter","Grahame-Smith","978-0446563079","13.99","Haper","NY","US","Political"},
                    {"NonFiction", "Frankenstein","Shelley","978-0486282114","7.99","Pearson", "TX","England", "Historical"},
                    {"Fiction", "Dracula","Stoker","978-0486411095","5.99","Double Day", "CA","4918362"},
                    {"NonFiction", "Curse of the Wolfman"," Hageman","B00381AKHG","10.59","Harper", "NY","Transylvania","Historical"},
                    {"Fiction", "The Mummy","Rice","978-0345369949","7.99","Nelson","GA","3879158"}};

        Book bookArray[] = new Book[dataArray.length];
        int quantityArray[] = {12, 3, 7, 23, 5};

        for (int i = 0; i < dataArray.length; i++) {
            if (dataArray[i][0] == "NonFiction")
                bookArray[i] = new NonFictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
                Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8], dataArray[i][9]));
            else
                bookArray[i] = new FictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
                Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8]));
        }

        String msg = "";

        for (int i = 0; i < bookArray.length; i++) {
            charge = bookArray[i].calculateTotal(quantityArray[i]);
            grandTotal = charge + grandTotal;
            msg += String.format("%s  %s  $%.2f\n",bookArray[i].getTitle(), bookArray[i].getIsbn(), charge); 
        }

        msg += String.format("Grand Total  $%.2f ",  grandTotal);
        JOptionPane.showMessageDialog(null, msg);
    }
}
公共类图书测试{
公共静态void main(字符串参数[])
{
双重充电;
总双倍=0;
字符串数据数组[][]={{“非小说”、“亚伯拉罕·林肯吸血鬼猎人”、“格雷厄姆·史密斯”、“978-0446563079”、“13.99”、“哈珀”、“纽约”、“美国”、“政治”},
{《非小说类》、《弗兰肯斯坦》、《雪莱》、《978-0486282114》、《7.99》、《皮尔逊》、《德克萨斯州》、《英格兰》、《历史》},
{“小说”、“德古拉”、“斯托克”、“978-0486411095”、“5.99”、“双日”、“CA”、“4918362”},
{“非小说”、“狼人的诅咒”、“哈格曼”、“B00381AKHG”、“10.59”、“哈珀”、“纽约”、“特兰西瓦尼亚”、“历史”},
{“小说”、“木乃伊”、“赖斯”、“978-0345369949”、“7.99”、“纳尔逊”、“乔治亚州”、“3879158”};
Book bookArray[]=新书[dataArray.length];
int quantityArray[]={12,3,7,23,5};
for(int i=0;i
首先,您需要在代码周围放上黄铜。这将使编译器更容易发现错误

  for (int i = 0; i < dataArray.length; i++)
{
        if (dataArray[i][0] == "NonFiction")
        {

        bookArray[i] = new NonFictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
            Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8], dataArray[i][9]));
    }else
    {
            bookArray[i] = new FictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
            Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8]));}
    }
for(int i=0;i
这些行上有额外的括号

应该是

if (dataArray[i][0] == "NonFiction")
    bookArray[i] = new NonFictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3], Double.parseDouble(dataArray[i][4]),
            new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8], dataArray[i][9]);
else
    bookArray[i] = new FictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3], Double.parseDouble(dataArray[i][4]),
            new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8]);

您应该在长if语句周围加上大括号,因为它使代码更可读,但这不是您的错误。您的错误是,在分号之前的行末尾有一个右括号“)”比您应该的多

因此,您的代码应该如下所示:

for (int i = 0; i < dataArray.length; i++) {
        if (dataArray[i][0] == "NonFiction") {
            bookArray[i] = new NonFictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
                    Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8], dataArray[i][9]);
        } else {
            bookArray[i] = new FictionBook(dataArray[i][0], dataArray[i][1], dataArray[i][2], dataArray[i][3],
                    Double.parseDouble(dataArray[i][4]), new Publisher(dataArray[i][6], dataArray[i][7]), dataArray[i][8]);
        }
    }
for(int i=0;i
在您的
else
if
周围加上大括号。删除“dataArray[i][9]);“->”中最后两个括号中的一个数据数组[i][9]);'和"dataArray[i][8]);“->”dataArray[i][8]);”。您可以在if和else仍然是一条指令的内部编写代码,因此不需要大括号。然而,如果在if和else中的代码周围加上大括号,阅读代码可能会更清晰。