我是Java Strings的新手。 实际上我有反转单词的代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test2 {
public static void main(String[] args) throws IOException
{
System.out.println("enter a sentence");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String rev =br.readLine();
String [] bread = rev.split(" ");
for(int z =bread.length-1;z>=0;z--)
{
System.out.println(bread[z]);
}
}
}
对于上面的代码,我得到:
输入:班加罗尔是一个城市 输出:城市是班加罗尔
但我希望输出如下:
输入:班加罗尔是一个城市 输出:cityaisba ng a lore
另一个例子:
输入:Hello Iam New To Java.Java是面向对象的语言 输出:语言Ori en tedo bjec ti sjava。 javaToNe wIamolleH
请帮帮我
答案 0 :(得分:4)
这是你可以做到的一种方式:
String rev = br.readLine();
String [] bread = rev.split(" ");
int revCounter = 0;
for(int z = bread.length - 1; z >= 0; z--)
{
String word = bread[z];
for(int i = 0; i < word.length(); i++)
{
// If char at current position in 'rev' was a space then
// just print space. Otherwise, print char from current word.
if(rev.charAt(revCounter) == ' ')
{
System.out.print(' ');
i--;
}
else
System.out.print(word.charAt(i));
revCounter++;
}
}
答案 1 :(得分:0)
当我运行你的代码时,我得到以下结果:
city
a
is
Bangalore
所以要把它放在一行中,为什么不添加空格并打印一行呢?
System.out.println("enter a sentence");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String rev = br.readLine();
String[] bread = rev.split(" ");
for (int z = bread.length - 1; z >= 0; z--) {
System.out.print(bread[z] + " ");
}
答案 2 :(得分:0)
我没有像GHajba那样检查你的代码的有效性。但是如果你想让空格留在特定的地方,可以选择删除所有空格并根据原始字符串中的索引将它们放回去。
全部删除
newBread = newBread.replace(" ", "");
将它们放回去
StringBuilder str = new StringBuilder(newBread);
for (int index = oldBread.indexOf(" ") ;
index >= 0 ;
index = oldBread.indexOf(" ", index + 1))
{
str.insert(index, ' ');
}
newBread = str.toString();
我想出了这个,并且可能有更好的方法来做到这一点,也许没有StringBuilder,但这可能会帮助你,直到找到更好的方法。
答案 3 :(得分:0)
试试这个(我使用了一个字符串作为输入):
String original = "Bangalore is a city";
System.out.println("Original : "+original);
StringBuilder inverted = new StringBuilder();
StringBuilder output = new StringBuilder();
String temp = "";
String[] split = original.split("\\s+");
for (int i = split.length - 1; i >= 0; i--) {
inverted.append(split[i]);
}
temp = inverted.toString();
for (String string : split) {
int currLenght = string.length();
String substring = temp.substring(0,currLenght);
temp = temp.replaceAll(substring, "");
output.append(substring).append(" ");
}
System.out.println("Converted : "+output.toString());
答案 4 :(得分:0)
将没有空格的反转词添加到 StringBuffer b = new StringBuffer();
for (int i = bread.length-1; i >= 0 ; i--) {
b.append(bread[i]);
}
。
String
然后将原始StringBuffer
的空格插入 int spaceIndex, prevIndex = 0;
while ((spaceIndex = rev.indexOf(" ", prevIndex + 1)) != -1) {
b.insert(spaceIndex, ' ');
prevIndex = spaceIndex;
}
。
users