【问题标题】:doing java tutorials, getting error messages做java教程,收到错误信息
【发布时间】:2020-09-22 08:45:51
【问题描述】:

我正在做一个尝试学习基本 java 的教程。我 99% 确定我正确地遵循了教程,但我收到了一堆错误消息:

C:\Users\krist\IdeaProjects\Hello World\src\Main.java:10:45
java: ')' expected

C:\Users\krist\IdeaProjects\Hello World\src\Main.java:11:28
java: not a statement

C:\Users\krist\IdeaProjects\Hello World\src\Main.java:11:36
java: ';' expected

在教程中,他们不使用此符号,但代码在教程中仍然有效。 会不会是 Java 中的一些更新改变了一些事情,或者我可能缺少一些软件来完成这项工作?

这是 Car.java 的代码:

import java.awt.*;
public class Car {

    // Data types:
    // int -> 1, 2, 3...
    // double -> decimal 34.5, 32.1
    // String -> "a1a2" or "Hello World"
    // Color -> from awt library
    // Boolean -> true/false

    double averageMilesPerGallon;
    String licencePlate;
    Color paintColor;
    boolean areTaillightsWorking;

    public Car(double inputAverageMPG,
               String inputLicencePlate,
               Color inputPaintColor,
               boolean inputAreTaillightsWorking) {
        this.averageMilesPerGallon = inputAverageMPG;
        this.licencePlate = inputLicencePlate;
        this.paintColor = inputPaintColor;
        this.areTaillightsWorking = inputAreTaillightsWorking;
    }

    public void changePaintColor(Color newPaintColor) {
        this.paintColor = newPaintColor;
    }
}

这是 main.java 的代码:

import java.awt.*;
import static java.awt.Color.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Markus");

        Car myCar = new Car (inputAverageMPG: 25.5,
        inputLicencePlate: "1BC32E",
        inputColor.BLUE,
        inputAreTaillightsWorking: true);

        Car sallyCar = new Car (inputAverageMPG: 13.9,
                inputLicencePlate: "3D20BN",
                inputColor.BLACK,
                inputAreTaillightsWorking: false);

        System.out.println("My Car's licence plate: " +myCar.licencePlate);
        System.out.println("Sally's Car's licence plate: " +sallyCar.licencePlate);

    }
}

很抱歉,如果这个问题措辞不佳,我仍然不知道所有的技术术语可以很好地解释这个问题。

【问题讨论】:

  • new Car (inputAverageMPG: 25.5, ... 不是有效的 java,应该是 new Car (25.5, ...
  • new Car (inputAverageMPG: 25.5, inputLicencePlate: "1BC32E", inputColor.BLUE, inputAreTaillightsWorking: true) - 类似的东西不是有效的 Java 语法 - 它甚至意味着什么? inputLicencePlate: 25.5 应该做什么?
  • 您正在使用 Java 类构造函数作为一种 JavaScript。您只需要以这种方式通过构造函数传递参数: Car myCar = new Car(25.5, "1BC32E", BLUE, true);无需传递键值对。

标签: java methods constructor


【解决方案1】:

这是对构造函数/方法的无效调用:

Car myCar = new Car(inputAverageMPG: 25.5,
inputLicencePlate: "1BC32E",
inputColor.BLUE,
inputAreTaillightsWorking: true);

改为:

Car myCar = new Car(25.5, "1BC32E",  ...

【讨论】:

    【解决方案2】:
    new Car(inputAverageMPG: 25.5,
        inputLicencePlate: "1BC32E",
        inputColor.BLUE,
        inputAreTaillightsWorking: true);
    

    这是不对的。 Java 没有这样的命名参数。

    问题在于您使用的是 IntelliJ IDEA,它为您提供参数提示。它看起来像这样:

    如果仔细观察,可以看到参数名称是用另一种字体绘制的。

    很遗憾,这个功能给新手带来了很多困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多