为什么“身体”被重置为零?

时间:2014-10-03 20:56:33

标签: java

我的程序绘制了一个cootie怪物(一个身体和一个头部),身体在头部之前被绘制。但是当我运行该程序时,它说“无法添加身体部位!”当我输入2作为输入时(即使我已经绘制了身体)。注意:1作为输入绘制身体,2绘制头部。

我已经确定了问题,但我不确定如何修复它。问题是在进入“if(rollValue == 2)...”之前头被重置为0。我的程序可以绘制身体,但在完成绘制身体后,我的“身体”变量似乎被设置为0.这就是为什么我的程序没有绘制头部。有关如何修复它的任何想法,以便我的程序在绘制正文后不会将“body”重置为0?

import java.util.Scanner;

public class Cootie
{
   public static void main(String[] args)
   {
      boolean done = false;

      while (!done)
      {
         Scanner scanner = new Scanner(System.in);
         System.out.println("BODY PARTS:");
         System.out.println("1 = body");
         System.out.println("2 = head");
         System.out.println("3 = one leg");
         System.out.println("4 = one antenna");
         System.out.println("5 = one eye");
         System.out.println("6 = tail");
         System.out.println("What number did you roll?: ");
         int rollValue = scanner.nextInt();

         int body = 0;
         int head = 0;

         if (rollValue == 1)
         {
            if (body == 0)
            {
               body = 1;
            }
            else
            {
               System.out.println("Can't add body part!");
               System.out.println(" ");;
            }
         }
         else if (rollValue == 2)
         {
            if (body == 1 && head == 0)
            {
               head = 1;
            }
            else
            {
               System.out.println("Can't add body part!");
            }
         }
         else
         {
            System.out.println("Enter a valid input!");
         }
         if (body == 1)
         {
            System.out.println("------------------------------");
            System.out.println("You got the body!");
            System.out.println(" ");
            System.out.println(" ");
            System.out.println("   [ ]");
            System.out.println(" ");
            System.out.println("   [ ]");
            System.out.println(" ");
            System.out.println("   [ ]");
            System.out.println(" ");
         }
         if (head == 1)
         {
            System.out.println("You got the head!");
            System.out.println(" ");
            System.out.println("  (    )");
         }
         if (body == 1 && head == 1)
         {
            System.out.println("Congratulations you have completed your cootie!");
            done = true;
         }
      }
   }
}

3 个答案:

答案 0 :(得分:4)

您已在body循环内声明了head(和while)个变量,因此这将运行每个循环:

int body = 0;
int head = 0;

所以每个循环,这些变量都会重置为0。要保留不同迭代的值,请在while循环之前声明并初始化它们,以便它们仅初始化为0一次。 (您也可以在循环开始之前声明并初始化Scanner。)

int body = 0;
int head = 0;
Scanner scanner = new Scanner(System.in);

while (!done)
{
   // Other code still the same

答案 1 :(得分:2)

这是因为你将body和head声明为while循环。要解决此问题,请在

之前创建变量
while (!done)

迭代。

答案 2 :(得分:0)

你的body和head变量在while循环中初始化,这就是每次重置为零的原因。只需从while循环移出这些变量即可。

如果要在每次迭代时重置变量值,请在循环内初始化变量,或者如果要保持在循环中保持更新值,而不是在循环外初始化那些变量。