假设您有一个字符串和一个大写字母表示一个单词的结尾。例如,如果您有wElovEcakE,其中E,E和K分别表示单词wE,lovE和cakE的结尾。您需要反转每个单词(因为您知道单词的结尾)。整体上不要颠倒弦。为了说明这一点,如果我们给wElovEcakE作为输入,则输出应该为EwEvolEkac。看到wE变成了Ew,lovE变成了Evol,依此类推。...
以及我尝试使用..的方式
`import java.util.Scanner;
public class Alternative{
public static void main(String[]args){
Scanner robo=new Scanner (System.in);
System.out.println("Enter a word ");
String word=robo.nextLine();
char[] array=word.toCharArray();
for(int i =0;i<array.length;i++){
int count =0;
for(int j=0;j<=("EMPTY");j++) // here i am trying to operate a loop where it will work up to the Capital letter.
count ++;
}
//Code incomplete
}
}
}`
上面我在条件部分中提到了“空” ...我想操作一个循环,在该循环中,我的循环将工作至大写字母,然后我将计算所有我已算到大写字母的字母,然后最后一次步骤就像我将进行另一个循环,在该循环中我将反转所有字母,而该循环的条件将<= count;例如:lovE(算出的4个字母,我将反转四次)。
如果您认为我的方法是正确的,可以帮我在“空”部分写下条件吗?你们可以以其他任何方式帮助我解决问题吗?
这里是使用StringBuilder类的解决方案
Scanner robo=new Scanner (System.in);
System.out.println("Enter a word ");
String word=robo.nextLine();
String upperCase = word.toUpperCase(); //used to find uppercase letters
StringBuilder builder = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
char nextChar = word.charAt(i);
builder.append(nextChar);
if (nextChar == upperCase.charAt(i)) {
String subWord = builder.reverse().toString();
System.out.println(subWord); //It's not clear what to do with the found words
builder = new StringBuilder();
}
}
测试是否适合您:
Scanner robo = new Scanner (System.in);
System.out.println("Enter a word ");
String word = robo.nextLine();
String textInvert = "";
int indexAnt = 0;
for (int i = 0; i < word.length(); i++) {
if (Character.isUpperCase(word.charAt(i))) {
for (int j = word.substring(indexAnt, i + 1).length() - 1; j >= 0; j--)
textInvert += word.substring(indexAnt, i + 1).charAt(j);
indexAnt = i + 1;
}
}
System.out.println(textInvert);