我已经做了很多研究试图解决这个问题(大约2.5小时),但我仍然无法编译我的程序。我试过让方法不是静态的,但是当试图运行它时,它给了我这个错误:
“错误:主要方法在类prog6中不是静态的,请定义 main方法为:public static void main(String [] args)“
当main方法是静态的时,我在编译器中得到以下错误
错误:“无法从静态引用非静态变量输入 上下文 usd = input.nextDouble();“
如果这个问题多余,我很抱歉,我不是故意要求我自己寻找答案,但我现在已经在这工作了好几个小时了,我不明白我的意思我做错了。
此计划的一些额外信息:它意味着从用户那里获取输入,以找出他们想要转换成的货币,以及他们希望转换多少美元。然后,我会调用一个方法来进行计算并返回它们。 (任何试图转换超过200美元的金额都需要5%的费用。)
import java.util.Scanner;
public class prog6
{
Scanner input = new Scanner(System.in);
public static void main (String[] args)
{
char curr = 0;
double usd;
double result;
while (curr!='Q' || curr!='q') { //loop
System.out.println("What type of currency would you like to buy?");
curr = input.next().charAt(0);
System.out.println("How many dollars would you like to convert?");
usd = input.nextDouble(); //asking user for info needed to convert
if (usd>200) {
usd = (usd)*(0.95);
}
result = calc (curr,usd); //invoke the method
}
}
public double calc (char mCurr,double mUsd) //method
{
if (mCurr=='E' || mCurr=='e') {
return (mUsd)*(0.88);
}
else if (mCurr=='P' || mCurr=='p') {
return (mUsd)*(0.77);
}
else if (mCurr=='Y' || mCurr=='y') {
return (mUsd)*(113.17);
}
return 0;
}
}
答案 0 :(得分:0)
有两种方法可以解决您的问题
input
变量更改为static
; 或
main
方法中,prog6 myprog= new prog6();
并将input
称为myprog.input ...
。答案 1 :(得分:0)
主要方法需要是静态的。从那里,创建一个类的实例,并从静态main方法调用非静态方法。例如..
public class Prog6 {
private Scanner input = new Scanner(System.in);
public static void main (String[] args) {
Prog6 prog6 = new Prog6();
prog6.start();
}
public void start() {
char curr = 0;
double usd;
double result;
// etc...
}
}
您可以将成员变量设为静态,但使用常规非静态成员和方法并使用静态main方法调用它是更好的形式。