2013-10-11 37 views
0

我目前遇到問題。我有一個程序可以從控制檯讀取一段文字(不是文本文件)。輸入段落包含新行。我需要輸出看起來像輸入(我在這裏開關K & Y),包括適當位置的新行。輸入將是這樣的: TUESDAK,FEBRUARK 8如何輸出從控制檯讀入的新行

親愛的主席先生,

關於對MONDAK發貨,IT晚點了,到達WEDNESDAK。 (注意跳過的線?) 我已經得到了代碼工作完美,除非我不知道如何讓它去正確的地方下一行。有沒有辦法在代碼中做到這一點?或者是否有某種方法需要輸入我的輸入(我正在粘貼&粘貼)。或者我想要做不可能的事情,應該只是使用文本文件?

我的代碼(原諒我的億和2如果/ while循環):

import java.util.Scanner; 
public class Y2K { 
public static void main (String[]args){ 
    String memo = "a"; 
    Scanner txt = new Scanner (System.in); 


    while(txt.hasNext()&& memo.length() <= 90){ 
     memo = txt.next(); 
     if (memo.equals("!")){ 
      System.out.println("!"); 
      System.exit(0); 
     } 
     else if (memo.contains("K") || memo.contains("Y")){ 
       if (memo.contains("K")){ 
        memo = memo.replace("K", "Y"); 
       } 
       else if(memo.contains("Y")){ 
        memo = memo.replace("Y", "K"); 
       } 
       System.out.print(memo + " "); 
     } 
     else{ 
      System.out.print(memo + " "); 
     } 
    } 
} 
} 

回答

0

,而不是txt.hasNext()txt.next()使用txt.hasNextLine()txt.nextLine()。然後在while循環結束時打電話給System.out.println()以打印新的行字符,因爲您將在行尾 您的代碼應該如下所示(因爲您現在必須手動檢查每個字符):

import java.util.Scanner; 
public class Y2K { 
    public static void main (String[]args){ 
     String memo = ""; 
     Scanner txt = new Scanner (System.in); 


     while(txt.hasNextLine()&& memo.length() <= 90){ 
      memo = txt.nextLine(); 
      if (memo.equals("!")){ 
       System.out.println("!"); 
       System.exit(0); 
      } 
      char[] chars = memo.toCharArray() 
      for(int i = 0; i<chars.length;i++){ 
       if(chars[i]=='K') 
        chars[i]='Y' 
       else if(chars[i]=='Y') 
        chars[i]='K' 
       } 
       memo=String.valueOf(chars); 
       System.out.println(memo); 

     } 
    } 
    } 
}