首页 > 解决方案 > Java - 不同的参数导致不同的输出

问题描述

我想实现以下目标:

如果我使用参数 a 或 b 调用方法 v2.horn(),它应该输出 a 或 b。但不知何故,我不知道该怎么做。

代码如下:

public class Vehicle {
    int maxSpeed;
    int wheels;
    String color;
    double fuelCapacity;  

    void horn(a,b) {
        String a = "Beep!";
        String b = "Boop!";
        System.out.println(a);
        System.out.println(b);
    }

    void blink() {
        System.out.println("I'm blinking!");
    }
}

class MyClass {
    public static void main(String[ ] args) {
        Vehicle v1 = new Vehicle();
        Vehicle v2 = new Vehicle();
        v1.color = "red";
        v2.horn(a);
        v1.blink();
    }
}

标签: javaoopinheritance

解决方案


我认为你想要实现的是,当你用一些参数调用你的方法“喇叭”时,它必须要么使用“哔!” 或“嘘!”。

首先:

void horn(a,b)

在 Java 中不是有效的函数签名,在 java 函数中,您始终必须指定您提供的输入是什么类型。

在您的函数中,您必须像这样定义 a 和 b 是 String :

void horn(String a, String b)

如果您希望您的代码以您现在编写的方式运行,您必须稍微移动您的代码,您最终会得到以下结果:

public class Vehicle {
int maxSpeed;
int wheels;
String color;
double fuelCapacity;

void horn(String in) {
    System.out.println(in);
}

void blink() {
    System.out.println("I'm blinking!");
}
}

class MyClass {
public static void main(String[ ] args) {
    String a = "Beep!";
    String b = "Boop!"; 

    Vehicle v1 = new Vehicle();
    Vehicle v2 = new Vehicle();
    v1.color = "red";
    v2.horn(a);
    v1.blink();
    }
}

实现您正在寻找的功能的另一种方法:您也可以只使用布尔值。

void horn(boolean a) {
    if (a)
    {
        System.out.println("Beep!");
    }
    else
    {
        System.out.println("Boop!");
    }
}   

然后为了做你想做的事,你必须像这样调用方法:

// Use either true or false.
v2.horn(true); 
v2.horn(false);

推荐阅读