![](/img/trans.png)
[英]How to print string from first character to determined character with java?
[英]How to print the first recurring character in a string?
我有一個學校作業,我必須創建一個程序來打印給定字符串中的第一個重復出現的字符。
例如,如果輸入是“hello”,那么它應該輸出為“l”。 我編寫了以下代碼,但它同時打印了“l”和“o”。
String text = "helloo";
int length = text.length();
for (int i = 0; i <= length - 1; i++) {
char curChar = text.charAt(i);
for (int j = i + 1; j <= length - 1; j++) {
if (curChar == text.charAt(j)) {
System.out.println(curChar);
break;
}
}
}
有人可以幫我解決這個問題嗎? 感謝您提供任何答案!
你只是打破了內循環,而不是外循環。 您可以將 break 與標簽一起用於外循環。 例如:
String text = "helloo";
int length = text.length();
outerloop:
for (int i = 0; i <= length - 1; i++) {
char curChar = text.charAt(i);
for (int j = i + 1; j <= length - 1; j++) {
if (curChar == text.charAt(j)) {
System.out.println(curChar);
break outerloop;
}
}
}
在此處獲取更多信息 - 如何打破 Java 中的嵌套循環?
希望這會有所幫助,但您應該嘗試自己完成學校作業。
我意識到您要求直接修復您當前的方法。 但是對於那些將來可能會閱讀這個問題的人來說,這里有一種使用正則表達式的非常時尚的方法:
String text = "helloo";
String match = text.replaceAll("^.*?(.)\\1.*", "$1");
System.out.println(match);
l
模式^.*?(.)\\1
的基本思想是消耗字符串中最少數量的字符,直到我們遇到一個跟在同一個字符之后的單個字符。
這是另一個變體:
String text = "helloo";
ArrayList<String> a = new ArrayList<String>(Arrays.asList(text.split(Pattern.quote(""))));
for(int i = 0; i < a.size()-1;i++) {
if(a.get(i).compareTo(a.get(i+1)) == 0) {
System.out.println(a.get(i));
break;
}
class FirstRepeatingChar
{
public static void main(String args[])
{
String s="hello";
for(int i=0;i<s.length();i++)
{
for(int j=0;j<s.length();j++)
{
if(s.charAt(i)==s.charAt(j))
{
System.out.println(" the First non repeating character is " +s.charAt(i));
break;
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.