我创建了一个程序,允许用户输入单词或短语或句子并反转它并显示结果。
我的问题是,当我运行它时,它会反转它,但当我想要做的就是保留输入的单词并将它们反转时,它会反转单词。
这是我目前的
//import statements
import java.util.*; //for scanner class
// class beginning
class WordReverser {
public static void main(String[] args ) {
//Declare variables area
String original, reverse = "";
Scanner in = new Scanner(System.in);
boolean blankString = false;
public StringBuilder reverse();
// beginning message to user to explain the program
System.out.println("Welcome to my reverse word program!");
System.out.println("Please enter in a word or a phrase and see it reversed: ");
//main code and calculations to do
while (!blankString){
System.out.println("Enter a string to reverse");//Collect inputs from user.
original = in.nextLine();
if (original.equals(""))
{
blankString = true ;
}
else {
int length = original.length();
for ( int i = length - 1 ; i >= 0 ; i-- )
reverse = reverse + original.charAt(i);
System.out.println("Reverse of entered string is: "+reverse);//Output results here
}
}
//End program message
System.out.println();
System.out.println("Hope you enjoyed using this program!");
}// end main method
}// end class
答案 0 :(得分:2)
显然是一个家庭作业问题,所以我会向你推进正确的方向,但我不会给出完整的答案。您需要一次反转一个单词而不是整个字符串。
你需要一些能够实现这个伪代码的东西:
original = getStringFromUser();
words[] = breakIntoWords(original);
foreach word in words {
reversed = reverse(word);
print reversed;
}
reverse(string word)
{
return reversed version of the input
}
breakIntoWords(sting sentence)
{
return array with each word as a sep.element
}
如果你阅读了文档,可能会发现reverse
和breakIntoWords
已经存在,所以你只需要调用正确的方法。
答案 1 :(得分:2)
解决问题的关键是学习如何将它们分解成更容易解决的小块。这是一个很好的解决问题的技术,是编程的核心。
你知道如何反转一个句子中的字母。您想要反转每个单词中的字母,但保留原始顺序中的单词。或者,换句话说,你想要:
希望每个步骤都更易于管理。如果没有,请考虑如何将它们分解成更小的步骤。例如,对于#2,你可能需要一个循环,然后在循环内部。
答案 2 :(得分:1)
你想颠倒单词顺序吗?在这种情况下,您必须将输入字符串拆分为“”。
要做到这一点,你的else块应该是
String[] words = original.split(" ");
for(int i = words.length-1; i>=0; i--)
reverse += words[i] + " ";
System.out.println("Reverse of entered string is: "+reverse);
答案 3 :(得分:0)
如果不是太优雅的话,我会看到两种快速处理的方法
最简单的方法是创建一个名为String originalWords的第三个变量,它从循环中的stdin附加。
重复使用现有的“原始”字符串,并执行与上述相同的操作,然后在第二次循环中将其反向循环。
答案 4 :(得分:0)
您可以将输入字符串拆分为单独的字数组,然后分别反转数组中的每个字。
答案 5 :(得分:0)
我已经重构了一些代码以解决您的问题。首先,我将反向逻辑放在一个单独的方法中
public static String reverse(String strToReverse) {
String original = strToReverse, reverse = "";
boolean blankString = false;
if (original.equals(""))
{
blankString = true ;
}
else {
int length = original.length();
for ( int i = length - 1 ; i >= 0 ; i-- )
reverse = reverse + original.charAt(i);
}
return reverse;
}
其次我将你的字符串分成单词(假设单词用简单的空格分隔)
public static void main(String[] args ) {
//Declare variables area
String original, reverse = "";
Scanner in = new Scanner(System.in);
boolean blankString = false;
//public StringBuilder reverse();
// beginning message to user to explain the program
System.out.println("Welcome to my reverse word program!");
System.out.println("Please enter in a word or a phrase and see it reversed: ");
//main code and calculations to do
while (!blankString){
System.out.println("Enter a string to reverse");//Collect inputs from user.
original = in.nextLine();
if (original.equals(""))
{
blankString = true ;
}
else {
String[] words = original.split(" ");
String[] reversedWords = new String[words.length];
StringBuilder reverseBuilder = new StringBuilder();
for (int index = 0; index < words.length; index++) {
reversedWords[index] = reverse(words[index]);
reverseBuilder.append(reversedWords[index] + " ");
}
System.out.println("Reverse of entered string is: "+reverseBuilder.toString());//Output results here
}
}
//End program message
System.out.println();
System.out.println("Hope you enjoyed using this program!");
}// end main method
这是一个执行示例: