Java 为什么a1可变剂量不是初始剂量?

Java 为什么a1可变剂量不是初始剂量?,java,Java,为什么变量a1不带首字母?我在if条件下定义了它,但不是初始的 import java.util.InputMismatchException; import java.util.Scanner; public class Input { static Scanner input; public Input() { input = new Scanner(System.in); System.out.println("Welcome ");

为什么变量a1不带首字母?我在if条件下定义了它,但不是初始的

import java.util.InputMismatchException;
import java.util.Scanner;

public class Input {
    static Scanner input; 

    public Input() {
        input = new Scanner(System.in);
        System.out.println("Welcome ");
    }

    public static Riazy GetInfo() throws InputMismatchException {
        System.out.println("Enter the first Number ");

        if(input.hasNextDouble()==false){
            throw new InputMismatchException("Erorr...");
        } else {
            double a1 = input.nextDouble();
        }
        System.out.println("Enter the second Number ");

        double a2 = input.nextDouble();
        boolean a4 = input.hasNextDouble();

        if(a4==false){
            throw new InputMismatchException("Erorr...");
        }
        Riazy riazy = new Riazy(a1 , a2);

        return riazy;
    }
}
正如Mike'Pomax'Kamermans所说:您没有正确地确定变量的范围

不会编译

公共静态Riazy GetInfo抛出输入不匹配异常{ System.out.Printl输入第一个数字; if!input.hasNextDouble{ 抛出新的InputMismatchExceptionError。。。; } 否则{ 双a1=输入。下一个加倍; //a1只能在这个街区内到达 } System.out.println输入第二个数字; double a2=输入。下一个加倍; 布尔值a4=input.hasNextDouble; 如果!a4{ 抛出新的InputMismatchExceptionError。。。; } /* *不会编译,因为a1已在if中定义 *else块,此处不可见 */ 返回新的Riazya1、a2; } 编撰

公共静态Riazy GetInfo抛出输入不匹配异常{ System.out.Printl输入第一个数字; double a1=null;//a1在此范围内可见 if!input.hasNextDouble{ 抛出新的InputMismatchExceptionError。。。; } 否则{ a1=输入。下一个双倍; } System.out.println输入第二个数字; double a2=输入。下一个加倍; 布尔值a4=input.hasNextDouble; 如果!a4{ 抛出新的InputMismatchExceptionError。。。; } 返回新的Riazya1、a2; }
我建议您阅读以下内容:

,因为您没有正确确定范围。它不存在于else块之外。它只在else块内起作用。拿走其他的,你不需要它。可能是