gpt4 book ai didi

java - 字符串中的重复字符

转载 作者:行者123 更新时间:2023-12-02 03:23:35 25 4
gpt4 key购买 nike

我确实知道我可能会找到有关“字符串中的重复字符”的其他线程/主题,但它们都与我的问题完全不同。

我创建了一个简单的刽子手游戏,我在其中输入要用来玩的单词,但是如果我输入一个具有重复字符的单词,我的整个程序将变得毫无用处并且无法正常工作。由于 indexOf 方法,我确实理解为什么会这样做,但我不知道如何修复它。

提前致谢。

代码如下:

public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.println("Welcome to the Hangman game..");
System.out.println("Enter the words you want to play with, '.' to exit");

ArrayList <String> x=new ArrayList<String>();
x.add(s.nextLine());

for(int i=0;!(x.get(i).contains(".") && x.get(i).lastIndexOf(".")==x.get(i).length()-1);i++){
x.add(s.nextLine());
}

x.set(x.size()-1, x.get(x.size()-1).substring(0, x.get(x.size()-1).length()-1));
System.out.println("Okay, a word will be chosen randomly, try to guess it!");

Random rand = new Random();
int value = rand.nextInt(x.size()==1 ? x.size():x.size()-1)+0;
char[] chr=new char[x.get(value).length()];
for(int i=0;i<chr.length;i++){
chr[i]='-';
System.out.print(chr[i]);
}

char m;
int n;
Boolean r=true;

while(r){
m = s.next().charAt(0);
n=x.get(value).indexOf(m);
if(n!=-1)
chr[n]=m;
for(int j=0;j<chr.length;j++){
System.out.print(chr[j]);
}

if(new String(chr).indexOf('-') == -1){
r=false;
System.out.println("\nHangman!");
}
}
}

最佳答案

有一个indexOf方法采用两个参数:字符和开始搜索的索引。在循环中调用它将会显示给定字符的每次出现。

而不是

n=x.get(value).indexOf(m);
if(n!=-1)
chr[n]=m;

你可以这样写

int n = x.get(value).indexOf(m);
while(n!=-1) {
chr[n] = m;
n = x.get(value).indexOf(m, n + 1);
}

关于java - 字符串中的重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39295831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com