任务是编写一个程序,该程序可以将字符串缩短到10个字符以上。缩短是通过除去所有以一个单词或字符串开头的元音,然后除去所有相邻的重复字母来实现的。我已经设法编写了程序,但是在尝试按照作业分配的格式进行格式化时遇到了一些困难。我在计算元音和重复字母删除的数量时也遇到了麻烦。
我已经尝试在打印命令中设置格式,但这会给我带来不正确的结果,因为它们会重复多次文本。我还尝试为打印命令String x = System.out.print(x.charAt(d));
指定一个字符串,但这没有用,并说我不能将void更改为字符串。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String x = scan.nextLine();
int d = 0;
int vow = 0;
int rep = 0;
int tot = 0;
if(x.length() >= 10){
x = x.toLowerCase();
while(d < x.length()){
if(((x.charAt(d) == 'a' || x.charAt(d) == 'e' || x.charAt(d) == 'i' || x.charAt(d) == 'o' || x.charAt(d) == 'u') && (d > 0 &&x.charAt(d-1) != ' ')) || (d > 0 && x.charAt(d) == x.charAt(d-1))){
d++;
}else{
(System.out.print(x.charAt(d)));
d++;
}
}
}else{
System.out.println("This doesn't need shortening!");
}
}
}
如果我输入“我将很快到达密西西比州”,则需要输出
Shortened message: i wl arv in mssp rly sn
Repeated letters removed: 6
Vowels removed: 11
Total characters saved: 17
但是现在我只能得到“ mssp rly sn中的i wl arv”,我不知道如何计算已删除的元音和重复变量。如果我尝试将代码中的(System.out.print(x.charAt(d)));
更改为(System.out.print("Shortened message: " + x.charAt(d)));
,我会得到
Shortened message: iShortened message: Shortened message: wShortened message: lShortened message: Shortened message: aShortened message: rShortened message: vShortened message: Shortened message: iShortened message: nShortened message: Shortened message: mShortened message: sShortened message: sShortened message: pShortened message: Shortened message: rShortened message: lShortened message: yShortened message: Shortened message: sShortened message: n
这是一堵奇怪的文字墙。我认为问题出在我如何打印它,但我不知道如何解决它。我当时以为将打印命令设置为字符串是可以的,但是我也不知道该怎么做。