2016-02-14 79 views
0

我在初學者課程中,但遇到以下問題的方法存在困難:編寫一個程序,要求用戶輸入一行輸入。程序應該顯示只包含偶數字的行。 例如,如果用戶輸入從字符串輸入中打印甚至是單詞?

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); 
    } 
} 
+1

@Nick尤伯它有什麼做0 – achabahe

回答

1

雖然ŧ這裏將會更簡單和更簡單的方式來做到這一點,我將使用基本結構 - for loop,if 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 
+0

請注意編輯。我添加了一些額外的東西來檢查用戶是否在兩個單詞之間添加了多個空格。檢查編輯後的「if block」。 –

2

我不想放棄的問題的答案(用於測試,而不是在這裏),但我建議你看看 String.Split() 從那裏你將需要遍歷結果並結合在另一個字符串輸出。希望有所幫助。

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); 
0

既然你說你是初學者,我會嘗試使用簡單的方法。

您可以使用indexOf()方法來查找空格的索引。然後,對句子的長度使用while循環,通過添加每個偶數單詞的句子。要確定一個單詞,請爲while循環的每次迭代創建一個整數併爲其加1。使用(你所做的整數)%2 == 0來確定你是在一個偶數還是奇數迭代。在每個偶數迭代上連接單詞(使用if語句)。

如果您得到類似於索引超出範圍-1的內容,請通過向結尾添加空格來操縱輸入字符串。

記住來構造環,使得,無論它是否是偶數或奇數迭代中,由1

的計數器增加你可以可選地去除奇數詞語,而不是串聯的偶數的話,但是這會更困難。

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()); 
    } 
} 
相關問題