我是一个全新的java新手,我有一个超级n00bish的问题。(我确实有一些一般的编程知识)。我试图访问变量"item“,但无济于事。有人能找出原因吗?
public void start()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter saleman's name: ");
String name = input.next();
int exit = 0;
do
{
System.out.println("Enter item number: ");
String item = input.next();
if (ValidateItem(item) == true)
{
if (Integer.parseInt(item) <=4 && Integer.parseInt(item) >=1)\
{
exit = 1;
}
else
System.out.println("Enter an item number between 1 and 4");
}
if (ValidateItem(item) == false)
{
System.out.println("Enter an item number between 1 and 4");
}
} while (exit == 0);
int exitQuan = 0;
do
{
System.out.println("Enter quantity (1-99): ");
String quant = input.next();
if (ValidateItem(quant) == true)
{
exitQuan = 1;
}
else
System.out.println("Enter a quantity between 1 and 99");
}
while (exitQuan == 0);
if (item == 1)
{
pay = 239.99;
}最后一条IF语句是我缺乏作用域的地方。谢谢。
发布于 2014-01-16 04:47:01
变量作用域仅扩展到声明周围的最小一对大括号。例如:
//this could be a method body, an if statement, a loop, whatever
{
int x;
} //x passes out of scope here因此,当您在do-while循环中声明item时,一旦退出循环,它的作用域就结束了。要解决此问题,请在循环上方声明item,如下所示:
String item = null; //initialize to null to avoid warning about using an un-initialized variable
do {
System.out.println("Enter item number: ");
item = input.next();
//rest of loop...
} while (exit == 0);这样,在方法返回之前,item将一直可用。
发布于 2014-01-16 04:46:26
在do-while循环外声明变量项。
int exit = 0;
String item = null;
do {
System.out.println("Enter item number: ");
itm = input.next();发布于 2014-01-16 04:46:45
您已经在第一个do-while循环中声明了item,不能在第二个循环中使用它,因为当第一个循环中存在控制流时,item就会超出作用域。
此外,正如其他人所建议的那样,适当的意图会对您有很大帮助;-)
https://stackoverflow.com/questions/21147813
复制相似问题