Вернуть типы и методы в Java - PullRequest
0 голосов
/ 19 мая 2018

Не могли бы вы, ребята, помочь мне исправить следующую программу?

Это дает мне следующую ошибку:

ошибка: метод absoluteValue в классе Pset3Ex4 не может быть применен к данным типам;

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;
        }
    }
}

Ответы [ 5 ]

0 голосов
/ 19 мая 2018
  1. Это сигнатура функции absoluteValue(double d), поэтому для нее требуется double в качестве параметра, но вы вызываете его как absoluteValue(); без.Вам необходимо установить сигнатуру функции на

    public double absoluteValue(double d){
        //...
    }
    
  2. Ваша функция не является статичной, для ее вызова требуется экземпляр, поэтому:

    • использовать экземпляр

      public static void main(String[] args){
          new Pset3Ex4().absoluteValue();
      }
      
    • сделать его статическим

      public static double absoluteValue(double d){
           //...
      }
      
0 голосов
/ 19 мая 2018

Во-первых, вам нужно передать аргумент этой функции (двойной аргумент!) Во-вторых, эта функция должна быть статической, она является частью класса, который еще не был создан.Если вы создадите новый экземпляр, что означает:

 Pset3Ex4 p = new Pset3Ex4();

Вы сможете вызывать функцию из p (новый экземпляр).В противном случае вам придется сделать этот метод статичным, он позволит вам получить к нему доступ без необходимости создавать новый экземпляр.

0 голосов
/ 19 мая 2018

Ваш absoluteValue(double d) не является статичным и не принимает нулевых аргументов.Поэтому вы получите сообщение об ошибке при попытке его скомпилировать.

Чтобы это исправить, просто измените сигнатуру и модификаторы для absoluteValue:

public static double absoluteValue() {
    double d;
    ...
0 голосов
/ 19 мая 2018

Вы вызываете метод

 absoluteValue() 

без каких-либо аргументов, в то время как вы определили метод с двойным аргументом

absoluteValue(double d), 

Таким образом, компилятор Java не нашел метод

absoluteValue() 

без аргументов.

Во-вторых, вы пытаетесь вызвать нестатический метод из статического основного метода, что недопустимо.

0 голосов
/ 19 мая 2018

Проверьте, если это то, что вы смотрите.Метод 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;
}

}  
}
...