打印字符串输入中的单词?

时间:2016-02-14 18:45:08

标签: java string

我在初学者课程中但是对于以下问题的方法有困难:编写一个程序,要求用户输入一行输入。然后程序应显示仅包含偶数字的行。 例如,如果用户输入

I had a dream that Jake ate a blue frog, 

输出应为

had dream Jake a frog

我不确定用什么方法来解决这个问题。我从以下开始,但我知道这只会返回整个输入:

import java.util.Scanner;

public class HW2Q1
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter a sentence");
        String sentence = keyboard.next();

        System.out.println();
        System.out.println(sentence); 
    }
}

5 个答案:

答案 0 :(得分:2)

我不想泄露问题的答案(测试,不在这里),但我建议你研究一下 String.Split() 从那里你需要遍历结果并在另一个字符串中组合输出。希望有所帮助。

答案 1 :(得分:1)

你应该使用sentence.split(正则表达式)正则表达式将描述你的世界是什么,在你的情况下它是空格('')所以正则表达式将是这样的:

regex="[ ]+";

[ ]表示空格会将您的单词分开+表示它可以是单个或多个连续的空白区域(即一个或多个空格) 你的代码可能看起来像这样

Scanner sc= new Scanner(System.in);
String line=sc.nextLine();
String[] chunks=line.split("[ ]+");
String finalresult="";
int l=chunks.length/2;
for(int i=0;i<=l;i++){
    finalresult+=chunks[i*2]+" ";//means  finalresult= finalresult+chunks[i*2]+" "
}
System.out.println(finalresult);

答案 2 :(得分:1)

虽然会有更简单,更简单的方法,但我会使用基本结构 - for loopif blockwhile loop来实现它。我希望你能够破解代码。尝试运行它并告诉我是否有错误。

String newsent;
int i; 
//declare these 2 variables
sentence.trim(); //this is important as our program runs on space
for(i=0;i<sentence.length;i++) //to skip the odd words
{
 if(sentence.charAt(i)=" " && sentence.charAt(i+1)!=" ") //enters when a space is encountered after every odd word
 {
 i++;
while(i<sentence.length && sentence.charAt(i)!=" ") //adds the even word to the string newsent letter by letter unless a space is encountered
  {
 newsent=newsent + sentence.charAt(i);
  i++;
   }
   newsent=newsent+" "; //add space at the end of even word added to the newsent
}

}

 System.out.println(newsent.trim()); 
// removes the extra space at the end and prints newsent

答案 3 :(得分:0)

既然你说你是初学者,我会尝试使用简单的方法。

您可以使用indexOf()方法查找空格索引。然后,使用while循环作为句子的长度,通过添加每个偶数单词的句子。要确定偶数单词,请创建一个整数,并为while循环的每次迭代添加1。使用(你所做的整数)%2 == 0来确定你是在偶数还是奇数迭代。在每个偶数迭代上连接单词(使用if语句)。

如果你得到索引超出范围-1的东西,可以通过在末尾添加一个空格来操纵输入字符串。

记住构造循环,使得无论是偶数还是奇数迭代,计数器都会增加1。

你可以选择删除奇数单词而不是连接偶数单词,但这会更难。

答案 4 :(得分:0)

不确定如何处理单词之间的多个空格或条目中奇怪的非字母字符,但这应该处理主要用例:

import java.util.Scanner;

public class HW2Q1 {
    public static void main(String[] args)
    {
        System.out.println("Enter a sentence");

        // get input and convert it to a list
        Scanner keyboard = new Scanner(System.in);
        String sentence = keyboard.nextLine();
        String[] sentenceList = sentence.split(" ");

        // iterate through the list and write elements with odd indices to a String
        String returnVal = new String();
        for (int i = 1; i < sentenceList.length; i+=2) {
            returnVal += sentenceList[i] + " ";
        }

        // print the string to the console, and remove trailing whitespace.
        System.out.println(returnVal.trim());
    }
}