一些变量在main方法中不起作用

时间:2018-03-01 01:58:57

标签: java

我想创建一个识别您的BAC级别的应用程序,但我不明白为什么这些值不能保存alcc和Raw。 我有我的方法来计算这些变量并且有返回语句但是由于某些原因在尝试编译它时,我得到了"找不到符号"错误。 感谢您让我知道我做错了什么,或者我应该做些什么。

错误如下(两者都在同一行):

AlcoholTester.java:49: error: cannot find symbol
    double bac = (alcc/Raw)*100;

代码:

Scanner s = new Scanner(System.in);
System.out.println("Option (1) is a shot of liquor. \nOption (2) is a beer. \n Option (3) is a glass of wine. \n");
int temp = s.nextInt();

if(temp == 1){
double alcc = AlcGrams(42.5,40);
}
else if(temp == 2){
    double alcc = AlcGrams(340,5);
}
else if(temp == 3){
    double alcc = AlcGrams(141.7,12);

}
else{
    double alcc = 0;
}


Scanner sc = new Scanner(System.in);
System.out.println("Enter your weight in pounds(lbs): ");
double w = sc.nextDouble();


double weight = w * 453.592;



Scanner sce = new Scanner(System.in);
System.out.println("Enter your gender: (1)-Male  (2)-Female");
int sexId = sce.nextInt();

if(sexId == 1){
    String sex = "male";
    double Raw = RawNumb(weight,sex);
}
else if(sexId == 2){
    String sex = "female";
    double Raw = RawNumb(weight,sex);
}

double bac = (alcc/Raw)*100; //Here is where the errors take place, one of them shows to alcc and the other to Raw.


Scanner nem = new Scanner(System.in);
System.out.println("When was your last drink? (In hours)");
double hour = nem.nextDouble();


double temporar = bac - hour;
double allc = temporar;
System.out.println("Your alcohol percentage is: " + allc);

2 个答案:

答案 0 :(得分:0)

Raw在两个不同的if语句中定义,但您在语句之外使用它。变量定义(在这种情况下为double Raw)仅适用于它们的范围。在if(sexId == 1)之前,只需添加第double Raw行,然后从double内的作业中删除if

答案 1 :(得分:0)

这两个变量在块范围内声明,这意味着每次你说double alcc时,它只能在声明它的花括号中使用。当您尝试在这些块之外使用它时,编译器会正确地告诉您它不在范围内。您需要在if块之外声明这些变量。此外,您需要初始化Raw,因为并非所有代码路径都为其赋值。另外,请注意您的RawNumb方法返回零的可能性。

    Scanner s = new Scanner(System.in);
    System.out.println("Option (1) is a shot of liquor. \nOption (2) is a beer. \n Option (3) is a glass of wine. \n");
    int temp = s.nextInt();

    double alcc;
    double Raw = 0.0;

    if(temp == 1){
        alcc = AlcGrams(42.5,40);
    }
    else if(temp == 2){
            alcc = AlcGrams(340,5);
    }
    else if(temp == 3){
            alcc = AlcGrams(141.7,12);

    }
    else{
        alcc = 0;
    }


    Scanner sc = new Scanner(System.in);
    System.out.println("Enter your weight in pounds(lbs): ");
    double w = sc.nextDouble();


    double weight = w * 453.592;

    Scanner sce = new Scanner(System.in);
    System.out.println("Enter your gender: (1)-Male  (2)-Female");
    int sexId = sce.nextInt();

    if(sexId == 1){
        String sex = "male";
        Raw = RawNumb(weight,sex);
    }
    else if(sexId == 2){
        String sex = "female";
        Raw = RawNumb(weight,sex);
    }

    double bac = (alcc/Raw)*100;


    Scanner nem = new Scanner(System.in);
    System.out.println("When was your last drink? (In hours)");
    double hour = nem.nextDouble();


    double temporar = bac - hour;
    double allc = temporar;
    System.out.println("Your alcohol percentage is: " + allc);