0

我有一个在 Java 中添加 2 个数字并输出总和的程序。(数字通过键盘输入)。但是,我有一个需要帮助解决的错误。我将在代码之后解释错误:

package com.sigma.java7;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Addition {

    public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    do {
        try {
           System.out.println("Enter A :");
           String numA = br.readLine();
           int a = Integer.parseInt(numA);
           break;
        } catch (Exception e) {
           System.out.println("Incorrect input. Please enter an integer.");
        }
    } while (true);
    do {
        try {
           System.out.println("Enter B :");
           String numB = br.readLine();
           int b = Integer.parseInt(numB);
           break;
        } catch (Exception e) {
           System.out.println("Incorrect input. Please enter an integer.");
        }
    } while (true);
    System.out.println("The sum of the numbers is: " +(a+b));
    br.close();
  }
}

在行

"System.out.println("The sum of the numbers is: " +(a+b));" 

我收到错误消息:“a 无法解析为变量,b 无法解析为变量。” 为什么?

4

4 回答 4

4

您的变量范围不好。当您定义局部变量时,它只能在同一个块中工作。前任。

{
    int i = 2;
    {
       int k = 4;
       // i can be accessed here.
    }
    // i can be accessed here.
    // k can not be accessed here.    
}
于 2013-07-16T21:13:36.050 回答
1

这是由变量范围问题引起的编译时错误: a 在第一个 try 块内定义,因此在该块外不可见。

因为这有一个分配的味道,只是一个提示:将它移到外部范围,你的问题就会得到解决。

于 2013-07-16T21:11:23.213 回答
0

在外部范围内定义 a 和 b 以便在打印时可以访问它。

于 2013-07-16T21:11:33.523 回答
0

在你第一次做 while 循环之前添加:

int a,b;

这将声明变量具有循环之外的范围,因此您可以在方法内的任何位置访问它们,而不仅仅是本地循环。如果添加这行代码,请替换

int a  = Integer.parseInt(numA);

和:

a  = Integer.parseInt(numA);

和 b 一样

于 2013-07-16T21:16:52.330 回答