首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java变量作用域

Java变量作用域
EN

Stack Overflow用户
提问于 2014-01-16 04:44:07
回答 8查看 577关注 0票数 0

我是一个全新的java新手,我有一个超级n00bish的问题。(我确实有一些一般的编程知识)。我试图访问变量"item“,但无济于事。有人能找出原因吗?

代码语言:javascript
复制
    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语句是我缺乏作用域的地方。谢谢。

EN

回答 8

Stack Overflow用户

发布于 2014-01-16 04:47:01

变量作用域仅扩展到声明周围的最小一对大括号。例如:

代码语言:javascript
复制
//this could be a method body, an if statement, a loop, whatever
{
    int x;
} //x passes out of scope here

因此,当您在do-while循环中声明item时,一旦退出循环,它的作用域就结束了。要解决此问题,请在循环上方声明item,如下所示:

代码语言:javascript
复制
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将一直可用。

票数 4
EN

Stack Overflow用户

发布于 2014-01-16 04:46:26

在do-while循环外声明变量项。

代码语言:javascript
复制
int exit = 0;
String item = null;
    do {
    System.out.println("Enter item number: ");
    itm = input.next();
票数 1
EN

Stack Overflow用户

发布于 2014-01-16 04:46:45

您已经在第一个do-while循环中声明了item,不能在第二个循环中使用它,因为当第一个循环中存在控制流时,item就会超出作用域。

此外,正如其他人所建议的那样,适当的意图会对您有很大帮助;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21147813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档