我在java中反转给定字符串的每个单词的代码有什么问题?

我在java中反转给定字符串的每个单词的代码有什么问题?,java,string,reverse,Java,String,Reverse,提交后,它说答案是错误的,请告诉我其中的逻辑错误是什么,而不是关于格式或其他方式 public class Solution { public static String reverse(String s1){ int i=s1.length()-1; String s2=""; while(i>=0){ s2=s2+s1.charAt(i--); } s2=s2+' '; return s2; }

提交后,它说答案是错误的,请告诉我其中的逻辑错误是什么,而不是关于格式或其他方式

public class Solution {
  public static String reverse(String s1){
    int i=s1.length()-1;
    String s2="";
    while(i>=0){
        s2=s2+s1.charAt(i--);     
    }
    s2=s2+' ';
    return s2;
  }
    // Return the reversed string. No need to print

  public static String reverseEachWord(String s1) {
      s1=s1+"";
    String s2="";
    int i=0;
    char ch;
    String temp="";
    while(i<s1.length()){
      ch=s1.charAt(i);
      if(ch!=' '){
        temp=temp+ch;
        i++;  
      }
      else{
        temp=reverse(temp);
        s2=s2+temp;
        temp="";
        i++;
      }
    }
    return s2;  
    }
}
公共类解决方案{
公共静态字符串反转(字符串s1){
int i=s1.length()-1;
字符串s2=“”;
而(i>=0){
s2=s2+s1.字符(i-);
}
s2=s2+“”;
返回s2;
}
//返回反向字符串。无需打印
公共静态字符串reverseEachWord(字符串s1){
s1=s1+“”;
字符串s2=“”;
int i=0;
char ch;
字符串temp=“”;

虽然(很抱歉,我看到了很多问题

  • 首先,我建议您下次使用StringBuilder时 经常操纵字符串

  • 其次,如果s1是一个单词,而不是像s1=“question”这样的句子,那么它将存储在temp中,while循环结束。s2仍然为空,您得到了一个错误的答案。此外,如果s1是一个包含多个单词的句子,那么最后一个单词的问题与上面提到的相同

  • 这一行中有一个错误,
    temp=reverse(s2);
    你的s2一开始是空的,它会一直是空的。我想你应该写
    temp=reverse(temp);

顺便说一句,我没有运行你的代码,现在我只在你的代码中发现了这些问题。

还有很多其他方法可以做到这一点。但是如果你想更改代码,那么它就在这里

public static String reverseEachWord(String s1) {

        s1 = s1 + " ";
        String s2 = "";
        int i = 0;
        char ch;
        String temp = "";
        while (i < s1.length()) {
            ch = s1.charAt(i);
            if (ch != ' ') {
                temp = temp + ch;
                i++;
            } else {
                temp = reverse(temp);
                s2 = s2 + temp;
                temp = "";
                i++;
            }

        }

        return s2;

    }
public static String reverseEachWord(String s1) {

    s1 = s1 + " ";
    String s2 = "";
    int i = 0;
    char ch;
    String temp = "";
    while (i < s1.length()) {

        while (s1.charAt(i) != ' ') {
            temp = temp + s1.charAt(i);
            i++;
        } 
        temp = reverse(temp);
        s2 = s2 + temp;
        temp = "";
        i++;

    }

    return s2;

}
公共静态字符串reverseEachWord(字符串s1){
s1=s1+“”;
字符串s2=“”;
int i=0;
char ch;
字符串temp=“”;
而(i
从温度=反向(s2)更改为温度=反向(temp)


您的reverseWord函数有一些逻辑错误,请将您的函数更新为: 改变

s1=s1+”;

因为您需要连接空间

而不是如果您可以使用while循环,它可以进一步简化您的代码

public static String reverseEachWord(String s1) {

    s1 = s1 + " ";
    String s2 = "";
    int i = 0;
    char ch;
    String temp = "";
    while (i < s1.length()) {

        while (s1.charAt(i) != ' ') {
            temp = temp + s1.charAt(i);
            i++;
        } 
        temp = reverse(temp);
        s2 = s2 + temp;
        temp = "";
        i++;

    }

    return s2;

}
公共静态字符串reverseEachWord(字符串s1){
s1=s1+“”;
字符串s2=“”;
int i=0;
char ch;
字符串temp=“”;
而(i
我的代码在java中反转给定字符串的每个单词有什么问题?给我们一个提示如何?可能是因为您的代码格式糟糕?问题是什么?为什么?您期望什么?发生了什么?是否有任何错误?如果有,请发布堆栈跟踪。结果字符串为空您正在收集每个单词将字符串
s1
转换成
temp
;一旦你在
temp
中得到了一个完整的单词,你就可以反转一些东西并将反转的东西附加到
s2
上。但是我认为你反转了错误的东西…
int j=0;
在第一种方法中没有任何作用。对于第二种方法,最简单的实现是s只需调用
s1.Split(“”)
获取一个单词数组,然后对每个单词应用第一个方法,并将所有单词粘在一起。did,错误答案仍然显示运行时error@vss工作正常。请看一看:是的,谢谢。你能告诉我while循环中的逻辑错误是什么吗?@vss-line-temp=reverse(s2);和s1=s1+“”;是意外行为的根本原因。:-)是的,但我更改了temp=reverse(temp)仍然是错误的,但我不明白为什么我想这样做,是的,这是错误的temp=reverse(s2);但即使答案仍然是错误的,您是否解决了前两个问题?请再次阅读。