如何将这段代码放入循环中,以便每次都要求用户输入,直到结果为“kill”?

时间:2016-06-25 09:24:34

标签: java loops

我正在练习“Head First Java”一书中的这段代码,我对这里循环的定位感到很困惑。代码用于创建一种具有随机dotcom字词的游戏(例如: abc.com)占用一些数组元素。在这里,我给网络中的单词提供了数组中3到5位的位置,用户尝试猜测位置。

import java.util.Scanner;

public class RunTheGame {

    public static void main(String[] args) {

        MainGameClass sampleObj= new MainGameClass();
        int[] location = {3,4,5};
        sampleObj.setdotcomLocationCells(location);


        Scanner input= new Scanner(System.in);
        System.out.println("Enter your guess");
        int userGuess=input.nextInt();

        String answer = sampleObj.checkForDotcom(userGuess);
        System.out.println(answer);

    }
}
package simpleDotComGame;

public class MainGameClass {
    int[] DotcomLocationCells;
    int numOfHits=0;

    public void setdotcomLocationCells(int[] location) {
        DotcomLocationCells= location;
    }

    public String checkForDotcom(int userGuess) {
        String result="miss";
        for(int cell:DotcomLocationCells) {
            if(cell == userGuess) {
                result ="hit";
                numOfHits++;
                break;
            }
        } // end for loop

        if(numOfHits == DotcomLocationCells.length) {
            result = "kill";            
            System.out.println("The number of tries= "+numOfHits);
        }
}

4 个答案:

答案 0 :(得分:3)

do {
        <insert code where answer result is created>
} while (!answer.equals("kill"))

upd。:但你必须覆盖equals方法才能正确使用,因为如果你看到在Object.class中声明的方法是什么,你会发现

public boolean equals(Object obj) {
    return (this == obj);

答案 1 :(得分:0)

Rachna,循环将定位在以下代码周围:

Scanner input= new Scanner(System.in);
System.out.println("Enter your guess");
int userGuess=input.nextInt();

String answer=sampleObj.checkForDotcom(userGuess);
System.out.println(answer);
//For string you must use the equals
if ("kill".equals(answer)){
   break;
}

之所以必须在循环内部对kill命令进行评估以打破它,并且输入不断询问用户输入直到他击中所有目标。

答案 2 :(得分:0)

这里是如何定位循环的。

String answer = "";
do{
    System.out.println("Enter your guess");
    int userGuess=input.nextInt();

    answer=sampleObj.checkForDotcom(userGuess);
    System.out.println(answer);
}
while(!answer.equals("kill"));  

注意:永远不要在Java中使用==检查字符串是否相等,除非您知道自己在做什么(除非您了解字符串常量池的概念,否则也读取)

答案 3 :(得分:0)

您可以在初始化之前声明变量:

String answer;
do {
  answer = sampleObj.checkForDotcom(userGuess);
  System.out.println(answer);
} while (!answer.equals("kill");

还要注意Scanner.nextInt()的语义:如果它不能将输入解析为int(例如,它包含字母),它将抛出异常,但不会跳过无效输入。您必须使用Scanner.nextLine()强制跳过它,否则您将获得无限循环。