所以我在计算机科学课上遇到了一些麻烦。我需要编写一些代码,这些代码将采用字符串并以反向字顺序向后打印。他让我找到一个空的空间,然后从那里打印然后继续搜索....并重复这个直到字符串的结尾。我输入了我的代码,所有它都打印了第一个单词3次。我知道这对你们来说似乎很明显。
public class Backwords
/*
* Gets words from main and prints in reverse order
*/
public static String BackwardsString(String str)
{
String str1 = (" " + str);
String answer = (" ");
int lastpos = str1.length();
for(int currpos = str.length(); currpos >= 0; currpos--) //shazam
{
if (str1.charAt(currpos) == ' ')
{
for (int p = currpos+1; p <lastpos; p++) //majicks
answer = answer + str1.charAt(p);
lastpos = currpos;
System.out.println(answer);
}
}
return answer;
}
public static void main(String [] args)
{
System.out.println("Enter a string : ");
Scanner firststr = new Scanner(System.in); //gets string input
String str = firststr.next();
System.out.println(BackwardsString(str));
}
}
答案 0 :(得分:1)
在第二个嵌套for循环
之前将答案设置回answer = ""
for(int currpos = str.length(); currpos >= 0; currpos--) //shazam
{
if (str1.charAt(currpos) == ' ')
{
answer = "";
for (int p = currpos+1; p <lastpos; p++) //majicks
answer = answer + str1.charAt(p);
lastpos = currpos;
System.out.println(answer);
}
}
答案 1 :(得分:0)
您应该在这里使用StringBuilder
而不是String
,因为可能有很多String
连接可能会在堆中创建更多对象。
使用StringBuilder
,您也可以轻松完成此任务。
例如:
public static String BackwardsString(String str) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(str);
return stringBuilder.reverse().toString();
}
public static void main(String[] args) {
System.out.println("Enter a string : ");
Scanner firststr = new Scanner(System.in);
String str = firststr.next();
System.out.println(BackwardsString(str));
}
答案 2 :(得分:0)
试试这个
Scanner sc = new Scanner(System.in);
System.out.println("Enter the string ");
String str = sc.nextLine();
String[] strArray = str.split(" ");
StringBuilder reverseString = new StringBuilder("");
for (int i = strArray.length - 1; i >= 0; i--) {
reverseString.append(strArray[i]+" ");
}
System.out.println("Reverse of string is : "+reverseString.toString());
答案 3 :(得分:0)
您可能更容易分割字符串:
String[] words = str1.split(" ");
然后你就可以对每个单词[i]进行反转,你可以将它分解为一个字符串数组,或者像其他人所建议的那样使用字符串构建器,根据你认为适合你的类的方式来决定你