[英]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(新實例)調用該函數。 否則,您將必須使此方法為靜態,它將允許您訪問它而不必創建新的實例。
該函數的簽名為absoluteValue(double d)
因此它需要一個double
作為參數,但您可以像absoluteValue();
那樣調用它absoluteValue();
沒有。 您需要將功能簽名設置為
public double absoluteValue(double d){ //... }
您的函數不是靜態的,它需要調用一個實例,因此:
使用實例
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.