微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取在if else语句中启动的值以在该语句外使用?

如何解决如何获取在if else语句中启动的值以在该语句外使用?

你好,我是新手,我很难做这个程序。我想知道是否有任何变通办法可以使else语句中的值在语句本身之外使用,或以其他任何方式使其工作。该程序假设在数组中有10个奇数时停止运行,我尝试通过将其放入do while循环中,并在else语句检测到奇数但k的值的情况下将变量k分配为加1的值仅在else语句中可用。

    public static void main(String[] args) {
        Scanner sc = new Scanner(system.in);
        int num[] = new int[100];

        System.out.println("This program stops when 10 odd numbers are entered.");
        do {
            int j = 0;
            int k = 0;
            for (int i = 0; i <= num.length; i++) {
                System.out.println("Please enter element " + i);
                num[j] = sc.nextInt();

                if (j % 2 == 0)
                    System.out.println("Entered number is even");
                else
                    k = k + 1;
            }
        } while (k != 11);
    }
    
}

解决方法

代码中的问题是变量k的范围,该变量仅在do-while循环内可用,而while (k != 11);在循环外。

因此,必须在循环外部声明k

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int num[] = new int[100];

    int k = 0;

    System.out.println("This program stops when 10 odd numbers are entered.");
    do {
        int j = 0;
        for (int i = 0; i <= num.length; i++) {
            System.out.println("Please enter element " + i);
            num[j] = sc.nextInt();

            if (j % 2 == 0)
                System.out.println("Entered number is even");
            else
                k = k + 1;
        }
    } while (k != 11);
}
,

java中,您无法从父范围访问在内部范围{ }中声明的变量。这意味着在此示例中:

if(x==2) {
  int k = 10;
} else {
  int j = 300;
}

您无法访问kj

在您的代码中,由于k是在do while范围内声明的,因此可以从if else语句中 对其进行访问。问题在于,由于k是在do while范围内声明的,因此,每次执行do时,您的k都会用值0重新定义。

解决方案是在父范围(即k范围)中声明main

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num[] = new int[100];
        
        int k = 0;
        int j = 0;
        
        System.out.println("This program stops when 10 odd numbers are entered.");
        do {
            for (int i = 0; i <= num.length; i++) {
                System.out.println("Please enter element " + i);
                num[j] = sc.nextInt();

                if (num[j] % 2 == 0)
                    System.out.println("Entered number is even");
                else
                    k = k + 1;
                
                j = j + 1;
            }
        } while (k != 11);
    }
    
}

此外,我认为您忘了增加j,它也会在每个while中重新定义,并且在if语句中您检查j % 2 == 0和不是来自用户的实际数字。祝你好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。