вернуть вопрос для метода - PullRequest
0 голосов
/ 05 ноября 2011

У меня проблема с методом, возвращающимся к основному методу. Это говорит о том, что сумма в «возвращаемой сумме» не может быть преобразована в переменную. Где я на этом ??

Это сообщение, которое я получаю: Несколько маркеров на этой линии - Пустые методы не могут вернуть значение - сумма не может быть разрешена до переменная

Вот код:

import java.util.Scanner;

public class Investment {
    public static void main(String[]args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter the amount invested: ");
        double amount = input.nextDouble();

        System.out.print("Enter the annual interest rate: ");
        double interest = input.nextDouble();

        int years = 30;

        System.out.print(futureInvestmentValue(amount, interest, years)); //Enter output for table
    }

    public static double futureInvestmentValue(double amount, double interest, int years) {

        double monthlyInterest = interest/1200;
        double temp;
        double count = 1;

        while (count < years)
            temp = amount * (Math.pow(1 + monthlyInterest,years *12));
        amount = temp;

        System.out.print((count + 1) + " " + temp);
    }

    {
        return amount;
    }
}

Ответы [ 3 ]

0 голосов
/ 05 ноября 2011

Удалите amount из своей области видимости. Также из метода futureInvestmentValue вы берете amount в качестве аргумента, но значение никогда не изменяется, поэтому вы возвращаете то же самое передаваемое значение, которое скорее всего не является желаемым результатом.

0 голосов
/ 05 ноября 2011
  1. удалить return amount из своей области видимости
  2. метод futureInvestmentValue ... Вы не можете изменять какие-либо параметры внутри метода, поэтому вам нужно объявить другую переменную, кроме количества внутри метода (возможно, это переменная temp, которую вы продолжаете использовать) и вернуть вместо
  3. когда вы что-то возвращаете, оператор return всегда находится внутри метода. Никогда вне этого, пока в его собственных скобках (никогда не видел это прежде ...)

    import java.util.Scanner;
    
    public class Investment {
        public static void main(String[]args) {
            Scanner input = new Scanner(System.in);
    
            System.out.print("Enter the amount invested: ");
            double amount = input.nextDouble();
    
            System.out.print("Enter the annual interest rate: ");
            double interest = input.nextDouble();
    
            int years = 30;
    
            System.out.print(futureInvestmentValue(amount, interest, years)); //Enter output for table
        }
    
        public static double futureInvestmentValue(double amount, double interest, int years) {
    
            double monthlyInterest = interest/1200;
            double temp;
            double count = 1;
    
            while (count < years) {
                temp = amount * (Math.pow(1 + monthlyInterest,years *12));
                System.out.print((count + 1) + " " + temp);
            }
    
            return amount;
        }
    }
    
0 голосов
/ 05 ноября 2011

Вы фигурные скобки не верны.Компилятор - и я - были в замешательстве по этому поводу.

Это должно работать (по крайней мере, синтаксически):

import java.util.Scanner;

public class Investment {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter the amount invested: ");
        double amount = input.nextDouble();

        System.out.print("Enter the annual interest rate: ");
        double interest = input.nextDouble();

        int years = 30;

        System.out.print(futureInvestmentValue(amount, interest, years));
    }

    public static double futureInvestmentValue(
            double amount, double interest, int years) {

        double monthlyInterest = interest / 1200;
        double temp = 0;
        double count = 1;

        while (count < years)
            temp = amount * (Math.pow(1 + monthlyInterest, years * 12));
        amount = temp;

        System.out.print((count + 1) + " " + temp);

        return amount;
    }
}
...