我在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);但即使答案仍然是错误的,您是否解决了前两个问题?请再次阅读。