【发布时间】:2015-02-24 21:31:31
【问题描述】:
基本上第 32-37 行都依赖于变量 vendMoney 来计算 AmountDue 但它给了我一个“局部变量可能没有被初始化”的错误,因为我没有设置具体的值。我希望将值设置为人输入扫描仪的任何内容...
import java.io.*;
import java.util.Scanner;
class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
Scanner vendM = new Scanner(System.in);
int coke;
int cokePrice;
int cokeAmountDue;
int cokeStock;
int dew;
int dewPrice;
int dewAmountDue;
int dewStock;
int sprite;
int spritePrice;
int spriteAmountDue;
int spriteStock;
int changeBackCoke;
int changeBackDew;
int changeBackSprite;
int vendMoney;
int buttonPress;
cokePrice = 2;
dewPrice = 2;
spritePrice = 1;
changeBackCoke = vendMoney - cokePrice;
changeBackDew = vendMoney - dewPrice;
changeBackSprite = vendMoney - dewPrice;
cokeAmountDue = vendMoney - cokePrice;
dewAmountDue = vendMoney - dewPrice;
spriteAmountDue = vendMoney - spritePrice;
cokeStock = 10;
dewStock = 10;
spriteStock = 10;
System.out.println("Which drink would you like...");
System.out.println(" ");
System.out.println("Press 1 for Coke");
System.out.println("Press 2 for Mountain Dew");
System.out.println("Press 3 for Sprite");
buttonPress = scanner.nextInt();
//button presses start
if (buttonPress == 1);
{
System.out.println(" ");
System.out.println("Please enter $2.00");
vendMoney = scanner.nextInt();
if (vendMoney == 2){
System.out.println(" ");
System.out.println("Here is your coke!");
}
if (vendMoney > 2){
System.out.println(" ");
System.out.println("Your change is: $" + changeBackCoke);
}
if (vendMoney < 2){
System.out.println(" ");
System.out.println("You didn't enter the correct amount of money please enter: $" + cokeAmountDue);
cokeStock = cokeStock -1;
if (buttonPress == 2);
{
System.out.println(" ");
System.out.println("Please Enter $2.00"); vendMoney = scanner.nextInt();
if (vendMoney == 2){
System.out.println(" ");
System.out.println("Here is your Mountain Dew!");
if (vendMoney > 2){
System.out.println(" ");
System.out.println("Your change is: $" + changeBackDew);
}
if (vendMoney < 2){
System.out.println(" ");
System.out.println("You didn't enter the correct amount of money please enter: $" + dewAmountDue);
}
if (buttonPress == 3)
{
System.out.println(" ");
System.out.println("Please Enter $1.00"); vendMoney = scanner.nextInt();
if (vendMoney == 1){
System.out.println(" ");
System.out.println("Here is your Sprite!");
}
if (vendMoney > 1){
System.out.println(" ");
System.out.println("Your change is: $" + changeBackCoke);
}
if (vendMoney < 1){
System.out.println(" ");
System.out.println("You didn't enter the correct amount of money please enter: $" + spriteAmountDue);
}
//button presses end
}
}
}
}
}
}
}
【问题讨论】:
-
我们这里没有行号,您必须指出您所指的位置。另外,你的问题是什么?也许您只需要将这些计算移到设置
vendMoney的位置之外。 -
在 Java 中,方法中的代码从上到下顺序执行。在几个地方,你使用了
vendMoney在你给它赋值。这是不允许的。每次更改vendMoney时,说spriteAmountDue = vendMoney - spritePrice不会自动重新计算。该计算发生一次,在计算机遇到那条线的那一刻。