Java 当循环不工作时,你会做什么?(找不到变量)

Java 当循环不工作时,你会做什么?(找不到变量),java,Java,我在do while循环中遇到问题,无法找到要测试条件是否为真的变量。这是我的密码: import java.util.Scanner; public class Loops { public static void main(String[] args){ System.out.println("Programmer: Jarred Sylvester"); System.out.println("Course: COSC 111, Winter 2016");

我在do while循环中遇到问题,无法找到要测试条件是否为真的变量。这是我的密码:

import java.util.Scanner;
public class Loops
{
  public static void main(String[] args){
   System.out.println("Programmer: Jarred Sylvester");
   System.out.println("Course:     COSC 111, Winter 2016");
   System.out.println("Lab#:        5");
   System.out.println("Due date:    Feb. 18, 2016");

   Scanner prompt = new Scanner(System.in);

   do{ 
   System.out.print("\nEnter a whole number: ");

   int num = prompt.nextInt();

   if(num % 2 == 0){
       System.out.println(num + " is even");
    }
   else{
       System.out.println(num + " is odd");

    }

    System.out.println("\nNumbers from 1 through " +num+ " are:");
    for(int counter = 1; counter <= num; counter++){
        System.out.print(counter + "    ");
    }

    int counter = 1;
    System.out.println("\n\nSquare of odd numbers from 1 through " + num + " are:");
    while(counter <= num){
        if(counter % 2 ==1){

        System.out.print((counter * counter)+ "     ");

        }
        counter++;
    }

    counter = 1;int sum =0;
    System.out.println("\n\nSum of even numbers from 1 through " +num+ " is:");
    while(counter <= num){

        if(counter % 2 == 0){
             sum+=counter;


        }

        counter++;
    }
     System.out.print(sum);


    System.out.println("\n\nNumbers from 1 through "+num+"(5 numbers per line):");
    for(int count = 1; count <= num; count++){
        System.out.print(count + "      ");

        if(count % 5 == 0){
            System.out.print("\n");

        }


    }

    System.out.println("\n\nDo it again, yes(or no)?");

  String play = prompt.next();
}while(play.equalsIgnoreCase("yes"));
}
import java.util.Scanner;
公共类循环
{
公共静态void main(字符串[]args){
System.out.println(“程序员:Jarred Sylvester”);
系统输出打印(“课程:COSC 111,2016年冬季”);
System.out.println(“实验室:5”);
系统输出打印号(“到期日:2016年2月18日”);
扫描仪提示=新扫描仪(System.in);
做{
System.out.print(“\n输入一个整数:”);
int num=prompt.nextInt();
如果(数值%2==0){
System.out.println(num+“是偶数”);
}
否则{
System.out.println(num+“是奇数”);
}
System.out.println(“\n从1到”+num+的数字为:”;

for(int counter=1;counter
play
必须在do-while循环之前声明,以便在
while
条件的范围内

String play = "";
do {
    ...
    play = prompt.next();
} while(play.equalsIgnoreCase("yes"));

您超出了作用域,因为您使用的是“代码> > {{}”/代码>循环。当java达到 Do/<代码>语句时,它跳过到<>代码> St声明,以确保它返回true。 如果使用
while(condition){body}
语句,则更容易看到变量的正确范围,因为变量位于顶部,我们自然希望首先执行的代码位于顶部


因此,我将使用如上所述的while循环,并且您必须在该行之前声明
play
变量。希望它能起作用:)

而不是将
play
声明为局部变量,将其声明为类级变量

String play;
do {
    ...
    play = prompt.next();
} while(play.equalsIgnoreCase("yes"));

请阅读“”,注意其中的最小部分。并修正缩进,使代码对您自己和其他人都可读。虽然您是正确的。已经说过这一点的答案在您的16分钟之前发布了…在检查代码时,我们没有人发布。后来我意识到。