Java 如何将Scanner.in值从方法返回到另一个方法

Java 如何将Scanner.in值从方法返回到另一个方法,java,return,Java,Return,我想做一些简单的程序来计算每月的产品价格。有两种输入:产品成本(100-10000)和费率数量(6-48)。我想按照下面的代码来做: import java.util.Scanner; public class Calculator { Scanner sc = new Scanner (System.in); double productCost; int numberOfRates; double loanInterestRate; double monthlyRate; Double

我想做一些简单的程序来计算每月的产品价格。有两种输入:产品成本(100-10000)和费率数量(6-48)。我想按照下面的代码来做:

import java.util.Scanner;

public class Calculator {
Scanner sc = new Scanner (System.in);
double productCost;
int numberOfRates;
double loanInterestRate;
double monthlyRate;

Double print () {
Calculator c = new Calculator();
System.out.println ("Enter the value of your product from 100 to 10 000 : ");
productCost=sc.nextDouble();
if (productCost < 100){
    System.out.println ("You have to choose price between 100 to 10000. Try again: ");
    c.print();
} else if (productCost >10000){
    System.out.println ("You have to choose price between 100 to 10000. Try again: ");
    c.print();
} else if (productCost >= 100 || productCost <=10000){

    c.print1();
    return = productCost;
   // how to return productCost to be used in next method print1()?
}
else return null;   

}
void print1(){
Calculator c = new Calculator(); 
System.out.println ("Now enter how many rates do you want to pay from 6 to 48: ");
numberOfRates=sc.nextInt();
if (numberOfRates<6){
    System.out.println ("You can't choose this number of rates. Choose between 6-48: ");
    c.print1();
} else if (numberOfRates>48){
    System.out.println ("You can't choose this number of rates. Choose between 6-48: ");
    c.print1();
} else if (numberOfRates>=6 || numberOfRates<=12) {
    loanInterestRate=1.025;
    monthlyRate = (productCost*loanInterestRate)/numberOfRates;
    System.out.printf("Your monthly rate is: "+ "%.2f%n",monthlyRate);
} else if (numberOfRates>=13 || numberOfRates <=24 ) {
    loanInterestRate=1.05;
    monthlyRate = (productCost*loanInterestRate)/numberOfRates;
    System.out.printf("Your monthly rate is: "+ "%.2f%n",monthlyRate);
} else if (numberOfRates >=25|| numberOfRates<=48){
    loanInterestRate=1.1;
    monthlyRate = (productCost*loanInterestRate)/numberOfRates;
    System.out.printf("Your monthly rate is: "+ "%.2f%n",monthlyRate);
}
}
}
问题是,我不知道如何从方法“print()”返回“double productCost”。productCost是从输入中获取的,这是双倍的,但NetBeans告诉我它的类型不正确。有谁能帮我弄清楚问题出在哪里吗?

就这么办

    return productCost;
return
是一个关键字,而不是变量。它“返回”给定值并退出函数,因此调用函数的实体可以执行以下操作:

public static void main(String[] args) {
    ...
    double cost = calc.print();  // note calc.print() PRODUCES a value, which we assign to `cost`
    ...
}

然后,您可以使用
cost
(或您选择的变量名称)执行任何操作,包括将其传递给另一个函数。

您的程序需要在几个地方进行更改。我已经做了这些更改,并在更新后的程序下方写下:

import java.util.Scanner;

class Calculator {
    Scanner sc = new Scanner(System.in);
    double productCost;
    int numberOfRates;
    double loanInterestRate;
    double monthlyRate;

    void print() {
        Calculator c = new Calculator();
        System.out.println("Enter the value of your product from 100 to 10 000 : ");
        productCost = sc.nextDouble();
        if (productCost < 100) {
            System.out.println("You have to choose price between 100 to 10000. Try again: ");
            c.print();
        } else if (productCost > 10000) {
            System.out.println("You have to choose price between 100 to 10000. Try again: ");
            c.print();
        } else if (productCost >= 100 || productCost <= 10000) {
            print1(productCost);            
        }
    }

    void print1(double productCost) {
        Calculator c = new Calculator();
        System.out.println("Now enter how many rates do you want to pay from 6 to 48: ");
        numberOfRates = sc.nextInt();
        if (numberOfRates < 6) {
            System.out.println("You can't choose this number of rates. Choose between 6-48: ");
            c.print1(productCost);
        } else if (numberOfRates > 48) {
            System.out.println("You can't choose this number of rates. Choose between 6-48: ");
            c.print1(productCost);
        } else if (numberOfRates >= 6 || numberOfRates <= 12) {
            loanInterestRate = 1.025;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        } else if (numberOfRates >= 13 || numberOfRates <= 24) {
            loanInterestRate = 1.05;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        } else if (numberOfRates >= 25 || numberOfRates <= 48) {
            loanInterestRate = 1.1;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        }
    }
}

public class MonthlyRate {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        calc.print();
        // TODO code application logic here
    }

}
import java.util.Scanner;
类计算器{
扫描仪sc=新的扫描仪(System.in);
双重生产成本;
国际货币基金组织;
双重借款;
双月桂酸酯;
作废打印(){
计算器c=新计算器();
System.out.println(“输入您的产品从100到10000的价值:”;
productCost=sc.nextDouble();
如果(产品成本<100){
System.out.println(“您必须在100到10000之间选择价格。请重试:”;
c、 打印();
}否则,如果(产品成本>10000){
System.out.println(“您必须在100到10000之间选择价格。请重试:”;
c、 打印();
}否则如果(产品成本>=100 | |产品成本48){
System.out.println(“您不能选择此数量的费率。请在6-48之间选择:”;
c、 打印1(产品成本);

}否则如果(numberOfRates>=6 | | numberOfRates=13 | | numberOfRates=25 | | | numberOfRates谢谢!我知道了!)
import java.util.Scanner;

class Calculator {
    Scanner sc = new Scanner(System.in);
    double productCost;
    int numberOfRates;
    double loanInterestRate;
    double monthlyRate;

    void print() {
        Calculator c = new Calculator();
        System.out.println("Enter the value of your product from 100 to 10 000 : ");
        productCost = sc.nextDouble();
        if (productCost < 100) {
            System.out.println("You have to choose price between 100 to 10000. Try again: ");
            c.print();
        } else if (productCost > 10000) {
            System.out.println("You have to choose price between 100 to 10000. Try again: ");
            c.print();
        } else if (productCost >= 100 || productCost <= 10000) {
            print1(productCost);            
        }
    }

    void print1(double productCost) {
        Calculator c = new Calculator();
        System.out.println("Now enter how many rates do you want to pay from 6 to 48: ");
        numberOfRates = sc.nextInt();
        if (numberOfRates < 6) {
            System.out.println("You can't choose this number of rates. Choose between 6-48: ");
            c.print1(productCost);
        } else if (numberOfRates > 48) {
            System.out.println("You can't choose this number of rates. Choose between 6-48: ");
            c.print1(productCost);
        } else if (numberOfRates >= 6 || numberOfRates <= 12) {
            loanInterestRate = 1.025;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        } else if (numberOfRates >= 13 || numberOfRates <= 24) {
            loanInterestRate = 1.05;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        } else if (numberOfRates >= 25 || numberOfRates <= 48) {
            loanInterestRate = 1.1;
            monthlyRate = (productCost * loanInterestRate) / numberOfRates;
            System.out.printf("Your monthly rate is: " + "%.2f%n", monthlyRate);
        }
    }
}

public class MonthlyRate {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        calc.print();
        // TODO code application logic here
    }

}