我正在嘗試將用戶輸入到字串變數中的句子洗掉重復的字母,同時保留句子中的空格。例如,如果用戶輸入“hello my name is danny”,它將回傳“Helo my nam is dn”。
為此,我已經嘗試過以下代碼:
package noRepeats.java;
import java.util.Scanner;
public class NoRepeats {
public static void main(String[] args) {
System.out.println("Please enter a sentence:");
Scanner sc = new Scanner(System.in);
String userInput = sc.nextLine();
String sentence = userInput;
char[] Array = sentence.toCharArray();
StringBuilder sb3 = new StringBuilder();
for(int i=0; i<Array.length;i ) {
boolean repeated = false;
for(int j = i 1; j<Array.length;j ) {
if(Array[i]==Array[j]) {
repeated = true;
break;
}
}
if(!repeated) {
sb3.append(Array[i]);
}
}
System.out.println(sb3);
}
}
但是,此代碼不保留句子的空格,并且似乎還洗掉了重復對中的第一個字母,但沒有洗掉第二個。
uj5u.com熱心網友回復:
您用于檢查的邏輯repeated略有不正確。您需要檢查您正在回圈的當前字符是否存在于您到目前為止構建的字串構建器中。這樣一個角色將被允許第一次而不是第二次。對于空間的東西,它只是一個你可以添加的簡單條件。
for (int i = 0; i < array.length; i ) {
if(array[i] == ' ') {
sb3.append(array[i]);
continue;
}
boolean repeated = sb3.indexOf(String.valueOf(array[i])) >= 0;
if (!repeated) {
sb3.append(array[i]);
}
}
另外,我想指出你不應該以大寫字母開頭你的變數名,所以變數Array應該是array.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473789.html
下一篇:如何使回圈更快?
