java - Java 中的 Do-While 循环

标签 java variables compilation

所以,据我了解, do while 循环总是至少运行一次?但如果是这种情况,为什么我们需要在循环之外声明和初始化变量呢?

以下代码为例:

    do {

    int a = (int) (Math.random() * 13);
    int b = (int) (Math.random() * 13);
    int c = (int) (Math.random() * 13);
    int d = (int) (Math.random() * 13);

    }

    while (a + b + c + d != 24);

这会抛出一个编译错误,指出 a、b、c、d 可能尚未初始化。由于我是一个 java 初学者,我确信这有一个简单的原因,但我似乎找不到它?!

非常感谢您对此提供的任何帮助。

最佳答案

查找变量范围,因为这是您的问题:您试图访问声明范围之外的变量,这里是 do-while 循环,但这是无法完成的。

请注意,如果您再引入一个变量,您的代码将会正常工作:

int sum = 0; // scope is *outside* of do-while loop
do {
  int a = (int) (Math.random() * 13);
  int b = (int) (Math.random() * 13);
  int c = (int) (Math.random() * 13);
  int d = (int) (Math.random() * 13);
  sum = a + b + c + d;
} while (sum != 24);

但请注意,现在如果您仍然需要访问 a、b、c 和 d 值,则无法访问。为了实现这一点,您应该在循环之前声明变量。

关于java - Java 中的 Do-While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19881795/

相关文章:

java - 通过正则表达式获取多个匹配项

java - 具有多个 targetEntity 的 Hibernate 映射接口(interface)

java - EndPoint 类中的 Spring WS SOAP 响应 header 修改

java - 在增强型for循环中使用final for循环变量的目的是什么?

java - Android - 如何 "invalidate"FragmentPagerAdapter 中的 fragment ?

jquery - 使内容 div 填充可变高度页眉和固定高度页脚之间的空间

CUDA __global__ 函数未调用

dll - 控件 controlName 的类 MSComctlLib.[ListView|TextBox|ect] 不是加载的控件类

c++ - 为什么这段代码用 g++ 编译需要这么长时间?

c++ - 运行时检查错误2