簡體   English   中英

Java中的返回類型和方法

[英]Return types and Methods in java

你們可以幫我修復以下程序嗎?

它給了我以下錯誤:

錯誤:Pset3Ex4類中的方法absoluteValue無法應用於給定類型;

import java.util.Scanner;

public class Pset3Ex4 {

    public static void main(String[] args) {
        absoluteValue();
    }

    public double absoluteValue(double d) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Input a number: ");
        d = sc.nextDouble();

        if (d < 0) {
            return -d;
        } else {
            return d;
        }
    }
}

您正在呼叫方法

 absoluteValue() 

沒有任何參數,而您定義了帶有雙參數的方法

absoluteValue(double d), 

所以java編譯器沒有找到方法

absoluteValue() 

沒有爭論。

其次,您試圖從不允許的靜態main方法中調用非靜態方法。

您的absoluteValue(double d)既不是靜態的,也不接受零參數。 因此,當您嘗試編譯它時,您將得到一個錯誤。

要解決此問題,只需更改absoluteValue的簽名和修飾符:

public static double absoluteValue() {
    double d;
    ...

首先,您需要將一個參數傳遞給該函數(一個雙參數!)。第二,此函數需要是靜態的,它是尚未實例化的類的一部分。 如果創建一個新實例,則意味着:

 Pset3Ex4 p = new Pset3Ex4();

您將能夠從p(新實例)調用該函數。 否則,您將必須使此方法為靜態,它將允許您訪問它而不必創建新的實例。

  1. 該函數的簽名為absoluteValue(double d)因此它需要一個double作為參數,但您可以像absoluteValue();那樣調用它absoluteValue(); 沒有。 您需要將功能簽名設置為

     public double absoluteValue(double d){ //... } 
  2. 您的函數不是靜態的,它需要調用一個實例,因此:

    • 使用實例

       public static void main(String[] args){ new Pset3Ex4().absoluteValue(); } 
    • 使其靜態

       public static double absoluteValue(double d){ //... } 

檢查是否您正在查看。 方法“ absoluteValue”不是靜態的,並且在main中調用該方法時不會傳遞任何參數。

import java.util.Scanner;

public class Pset3Ex4 {

public static void main(String[] args){
System.out.print("Result is " + absoluteValue());
}

public static double absoluteValue(){
Scanner sc = new Scanner(System.in);

System.out.print("Input a number: ");
d = sc.nextDouble();

if (d < 0){
return - d; 
}
else {
return d;
}

}  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM