2016-11-06 62 views
0

我正在制作一个类似于hangman游戏的java程序。涉及char和String的Java循环问题

程序首先从我的字符串Array中生成一个随机的Word。

然后用户必须键入一个字母。如果Word中有字母,它会要求另一封信,直到玩家输入正确的所有字母。

如果用户输入的字母不适合在Word中,那么程序应该为名为letterWrong的int变量添加+1。 当letterWrong为2时,图像应该改变。 当它3它应该改变 当它的4它应该改变 当它的5,游戏结束。

这里是问题: 当我键入一个字母时,程序会循环并检查Word是否包含该字母。如果是这样,那么程序会显示该字母。

问题出在信件不适合Word的时候。因为,我必须确保该单词不包含该字母,如果它不包含,那么我必须为int变量letterWrong添加一个+1。问题是循环内的+1。我必须把它放在循环之外。但我不能解决这个问题。

下面的代码:

char word = edittext.getText().charAt(0); 
for(int i = 0; i<randomWord.length(); i = i+1){ 
    if(randomWord.charAt(i)==word){ 

     textviewArray[i].setText(""+randomWord.charAt(i)); 
    } 
} 

什么是最好的方式,检查wheter字包含特定字母,如果它不,那么就应该添加+1 int变量。我之前做过的方式之前,它在循环内添加了超过+1的int变量。

+2

请删除上面,因为它不会阻止向下票的评论,可能会鼓励他们。请不要发布此类帖子,而应尝试改进您的问题,例如发布一个有效的[mcve],其中包含我们可以编译,运行和修改的代码。此外,您已将您的代码发布到您的问题中,而不是链接 - 对您有好处!如果您决定创建并发布有效的MCVE,请按照相同的步骤 - 将您的代码文本发布到您的问题中,而不是链接中。 –

+1

不是我的倒票 - 我会等一会儿,看看你是否发布了一个体面的MCVE。 –

+0

你是否得到它的工作? – ItamarG3

回答

4

您可以使用String.contains()

String a =String.valueOf(word); 
String s = randomWord; 
if(s.contains(a)){ 
    //preform actions 
... 

这将使word为字符串。我没有写出整个代码,以便为适应留下空间。

+0

downvoter,请详细说明 – ItamarG3

+0

不是你的down-voter,但我对这个问题的阅读表明他可能有一个变量范围问题,但对于我来说,仍然很难确切地说出问题出在哪里或什么,所以我认为这个答案现阶段可能为时过早。 –

+0

错了。但是,无论如何,谁在乎'String#的结果包含()',对吧? :D – Tom

0

正如Itamar Green所说,您可以使用String.contains()方法来检查randomWord是否包含该字母。如果它包含该字母,则显示该字母。如果不是,则增加letterWrong

char word = edittext.getText().charAt(0); 

if(randomWord.contains(word){ 
    textviewArray[i].setText(""+randomWord.charAt(i)); 
} else { 
    letterWrong++; 
} 
0

如果我得到了它的权利,你可以试试这个:

char word = edittext.getText().charAt(0); 
boolean flag = false; 
if(randomWord.indexOf(word) > -1) { 
    textviewArray[i].setText(""+word); 
} else { 
    ++letterWrong; 
    flag = true; 
} 

if(flag && letterWrong > 1) { 
    changeImage(); 
} 
+0

这很好,谢谢 – adamH