我在初学者课程中但是对于以下问题的方法有困难:编写一个程序,要求用户输入一行输入。然后程序应显示仅包含偶数字的行。 例如,如果用户输入
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);
}
}
答案 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 loop
,if block
和while 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());
}
}