方法不 printing/returning
Method not printing/returning
我的一种方法有问题。我检查了一遍又一遍,似乎找不到任何错误。我遇到的问题是该方法在调用时不会在控制台中打印。我认为这可能与方法中的 Scanner 有关。
该方法的代码是:
public String cpuGuess() throws FileNotFoundException{
Scanner fileRead = new Scanner(myGuesses);
int line = rand.nextInt(99-1)+1;
for(int i = 0; i <= line; i++){
Guess = fileRead.next();
}
fileRead.close();
CPUGuess = Guess;
if(Arrays.asList(super.used).contains(CPUGuess)){
System.out.println(cpu.cpuGuess());
}
else{
StringBuffer hiddenBuff = new StringBuffer(hidden);
for (int t = 0; t < phrase.length(); )
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
if (phrase.contains(CPUGuess)){
ArrayList<Integer> indicies = new ArrayList<Integer>();
for (int index = phrase.indexOf(CPUGuess.toString()); index >= 0; index = phrase.indexOf(CPUGuess.toString(), index + 1)){
indicies.add(index);
}
int[] index = new int[indicies.size()];
for(int i = 0; i < indicies.size(); i++) {
index[i] = indicies.get(i);
}
for (int n = 0; n < index.length; n++){
hiddenBuff.setCharAt(index[n], CPUGuess.charAt(0));
}
hidden = hiddenBuff.toString();
status = "Correct";
}
else if (!phrase.contains(CPUGuess)){
System.out.println("Sorry, no " + Guess + "'s");
System.out.println("Human, you're up!");
}
super.used.add(CPUGuess.charAt(0));
}
System.out.println(count + " " + CPUGuess + "s");
count = 0;
return hidden;
}
我在main方法下调用class中的方法:
public static void main(String[] args) throws FileNotFoundException {
System.out.println("WHEEL... OF... FORTUNE!!!!");
System.out.println(board.phraseGenerate());
System.out.println(cpu.cpuGuess());
}
请注意,cpu 对象已经构建,board.phraseGenerate 创建隐藏和短语。
感谢您的帮助,请不要居高临下,我在这方面相对较新,我看到很多 post 得到令人沮丧的反馈。
查看您的代码,您似乎在 for 循环之后缺少左花括号,如下所示:
for (int t = 0; t < phrase.length(); )
应该是
for (int t = 0; t < phrase.length(); ) { }
以上导致打印语句被跳过。不要忘记,正如我在评论中提到的,您正在跳过循环的第三部分(增量)。不确定你的代码是否应该这样工作,或者你必须在那里添加一个 t++,如下所示:
//not sure if you forgot t++ or that's how it is supposed to work
for (int t = 0; t < phrase.length(); t++) { }
您必须在此 for 循环中递增 t
:
for (int t = 0; t < phrase.length(); )
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
此外,您还漏掉了一个左花括号...我们中最优秀的人都会遇到这种情况。最后,加上增量和花括号:
for (int t = 0; t < phrase.length(); t++ ) { //Need that curly brace!
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
}
//t++ Probably important...!
我的一种方法有问题。我检查了一遍又一遍,似乎找不到任何错误。我遇到的问题是该方法在调用时不会在控制台中打印。我认为这可能与方法中的 Scanner 有关。
该方法的代码是:
public String cpuGuess() throws FileNotFoundException{
Scanner fileRead = new Scanner(myGuesses);
int line = rand.nextInt(99-1)+1;
for(int i = 0; i <= line; i++){
Guess = fileRead.next();
}
fileRead.close();
CPUGuess = Guess;
if(Arrays.asList(super.used).contains(CPUGuess)){
System.out.println(cpu.cpuGuess());
}
else{
StringBuffer hiddenBuff = new StringBuffer(hidden);
for (int t = 0; t < phrase.length(); )
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
if (phrase.contains(CPUGuess)){
ArrayList<Integer> indicies = new ArrayList<Integer>();
for (int index = phrase.indexOf(CPUGuess.toString()); index >= 0; index = phrase.indexOf(CPUGuess.toString(), index + 1)){
indicies.add(index);
}
int[] index = new int[indicies.size()];
for(int i = 0; i < indicies.size(); i++) {
index[i] = indicies.get(i);
}
for (int n = 0; n < index.length; n++){
hiddenBuff.setCharAt(index[n], CPUGuess.charAt(0));
}
hidden = hiddenBuff.toString();
status = "Correct";
}
else if (!phrase.contains(CPUGuess)){
System.out.println("Sorry, no " + Guess + "'s");
System.out.println("Human, you're up!");
}
super.used.add(CPUGuess.charAt(0));
}
System.out.println(count + " " + CPUGuess + "s");
count = 0;
return hidden;
}
我在main方法下调用class中的方法:
public static void main(String[] args) throws FileNotFoundException {
System.out.println("WHEEL... OF... FORTUNE!!!!");
System.out.println(board.phraseGenerate());
System.out.println(cpu.cpuGuess());
}
请注意,cpu 对象已经构建,board.phraseGenerate 创建隐藏和短语。
感谢您的帮助,请不要居高临下,我在这方面相对较新,我看到很多 post 得到令人沮丧的反馈。
查看您的代码,您似乎在 for 循环之后缺少左花括号,如下所示:
for (int t = 0; t < phrase.length(); )
应该是
for (int t = 0; t < phrase.length(); ) { }
以上导致打印语句被跳过。不要忘记,正如我在评论中提到的,您正在跳过循环的第三部分(增量)。不确定你的代码是否应该这样工作,或者你必须在那里添加一个 t++,如下所示:
//not sure if you forgot t++ or that's how it is supposed to work
for (int t = 0; t < phrase.length(); t++) { }
您必须在此 for 循环中递增 t
:
for (int t = 0; t < phrase.length(); )
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
此外,您还漏掉了一个左花括号...我们中最优秀的人都会遇到这种情况。最后,加上增量和花括号:
for (int t = 0; t < phrase.length(); t++ ) { //Need that curly brace!
if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){
count++;
}
}
//t++ Probably important...!