有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java根据第一个单词的长度反转字符串

我不熟悉Java字符串。 事实上,我有反转单词的代码:

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]);
        }

    }
}

对于上述代码,我得到:

Input :Bangalore is a city
Output: City is a Bangalore

但我希望输出如下所示:

Input: Bangalore is a city
Output:cityaisba ng a lore

另一个例子:

Input: Hello Iam New To Java.Java is object Oriented language.
Output: langu age Ori en tedo bjec ti sjava. javaToNe wIamolleH

请帮帮我


共 (5) 个答案

  1. # 1 楼答案

    我没有像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,可能会有更好的方法,但在找到更好的方法之前,这可能会对您有所帮助

  2. # 2 楼答案

    将不带空格的反向单词追加到StringBuffer

        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;
        }
    
  3. # 3 楼答案

    以下是一种方法:

        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++;
            }
        }
    
  4. # 4 楼答案

    当我运行您的代码时,我得到以下结果:

    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] + " ");
    }
    
  5. # 5 楼答案

    试试这个(我使用了一个字符串作为输入):

        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());