我编写了如下代码,但它没有正确返回第一个重复出现的字母。
示例:
在单词“统计”
中,重复出现的字母是s
、t
和i
。但是字母t
比字母s
和i
更早出现,但我的程序返回s
而不是t
。
根据手头的任务,我需要做什么才能使用两个for循环返回t?
public class Main {
public static char FRL(String word){
for(int i = 0; i<word.length(); i++){
for(int j = i+1; j<word.length(); j++){
if(word.charAt(i) == word.charAt(j)){
return word.charAt(i);
}
}
}
return '0';
}
public static void main(String[] args) {
String word = "statistics";
if (FRL(word) != '0'){
System.out.println(FRL(word));
}else{
System.out.println("No reccurring letter!");
}
}
}
通过将遇到的每个字符存储在哈希集中,可以减少或消除嵌套循环并提高性能:
public static char FRL(String word){
Set<Character> seen = new HashSet<>();
for(int i = 0; i < word.length(); i++) {
char next = word.charAt(i);
if (!seen.add(next)) {
return next;
}
}
return '0';
}
但是,如果您需要使用嵌套循环,那么您应该修复内部循环的初始化表达式和条件,即我们应该检查从索引0开始的字符,直到索引i为止的字符:
public static char FRL(String word) {
for(int i = 0; i < word.length(); i++) {
char next = word.charAt(i);
for(int j = 0; j < i; j++){
if(next == word.charAt(j)) {
return next;
}
}
}
return '0';
}
顺便说一句,getFirstRecuring信()
将是比FRL
更好的方法名称。
我编写了如下代码,但它没有正确返回第一个重复出现的字母。 示例:在单词“statistics”中,重复出现的字母是s、t和i,但字母t的递归速度比字母s和i快,但我的程序返回s而不是t。 根据手头的任务,使用两个for循环返回t需要做什么?
我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环 在这种情况下,我可以使用增强的for吗?
我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。
java中是否存在跳过for循环其余部分的令牌?类似VB的东西在Java中继续。
你有什么想法,我怎么能得到字符串的第二个点后的第一个字符。 在第一种情况下,我应该得到,在第二种情况下我应该得到。我考虑用点分割字符串,并提取第三个元素的第一个字符。但这似乎很复杂,我认为还有更好的方法。
问题内容: Java中是否有一个令牌可以跳过其余的for循环?Java中类似VB的Continue。 问题答案: 关键字将在调用时开始下一次迭代 例如 这将打印 看到 文件