运算符 <= 未定义参数类型 int、距离和更多错误



我想我在Distance.java上得到了正确的代码。只是一直在尝试显示Driver.java的循环输出。

问题是它说";运算符<=对于参数类型int,Distance"是未定义的;以及";小时";是一个重复的局部变量。

"运算符<=对于参数类型int,Distance"是未定义的;可能是由于";distance。getDistance(距离("被显示为字符串。但我该怎么做双人间呢?我将如何解决";小时";问题

public class Distance {
// creating private statement
private double speed;
private int hours;
// creating a Distance method
public Distance() {
// creating getters and setters
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public int getHours() {
return hours;
}
public void setHours(int hours) {
this.hours = hours;
}
// setting up distance equation
public double getDistance(double distance) {
return distance = hours * speed;
}
}
import java.util.Scanner;
public class Driver {
public static void main(String[] args) {
// TODO Auto-generated method stub
// setting up a scanner
Scanner scanner = new Scanner(System.in);
// creating objects
Distance speed = new Distance();
Distance hours = new Distance();
Distance distance = new Distance();
distance.getDistance(distance);
// input for vehicle speed and hour
System.out.println("Please enter vehicle speed: ");
scanner.nextDouble();
speed.setSpeed(scanner.nextDouble());
System.out.println("Please enther hours vehicle was in motion: ");
scanner.nextInt();
hours.setHours(scanner.nextInt());
System.out.println("HourtDistance Travelledn----t----------");
for (int hours = 1; hours <= distance; hours++) {
}
}
}

您定义了两个名为hours:的变量

  • 此处:Distance hours = new Distance();
  • 此处:for (int hours = 1; hours <= distancel; hours++)

关于<=:您正在尝试比较复杂对象,因为hours(第一个定义(和distanceDistance类的实例。因此,这两个错误。

运算符<=用于基元类型(例如int、long、double等(或其装箱类型(例如Integer、long、double等(,而不用于其他类型。

只要输入应该只针对一个对象,就不需要为每个输入创建那么多对象。此外,需要更改getDistance函数以返回基于speedtime的距离,而不需要将距离作为参数传递给它。

import java.util.Scanner;
class Distance {
private double speed;
private int hours;
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public int getHours() {
return hours;
}
public void setHours(int hours) {
this.hours = hours;
}
public double getDistance() {
return hours * speed;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Creating an object of Distance
Distance distance = new Distance();
// Input for vehicle speed and hour
System.out.print("Please enter vehicle speed: ");
distance.setSpeed(scanner.nextDouble());
System.out.print("Please enter hours vehicle was in motion: ");
distance.setHours(scanner.nextInt());
// Display the result
System.out.printf("Hour: %d, Speed: %f, Distance Travelled: %f", distance.getHours(), distance.getSpeed(),
distance.getDistance());
}
}

样本运行:

Please enter vehicle speed: 50.5
Please enter hours vehicle was in motion: 5
Hour: 5, Speed: 50.500000, Distance Travelled: 252.500000

看看JLS§15.220.1:

数值比较运算符的每个操作数的类型必须是可转换为基元数值类型的类型(§5.1.8(,否则会发生编译时错误。

distance是引用类型变量,不能是与<=数字运算符一起使用的操作数。此运算符的两个操作数都必须是基元,或者是任何可以开箱到基元的操作数。

最新更新