如何输出从控制台读入的新行

时间:2013-10-11 03:04:14

标签: java java.util.scanner

我目前遇到了一个问题。我有一个程序将从控制台读取段落(不是文本文件)。输入段落包括新行。我需要输出看起来像输入(我在这里切换K& Y),包括适当位置的那些新行。输入将是这样的: TUESDAK,FEBRUARK 8

亲爱的先生,

关于MONDAK的装运,它已经晚于WEDNESDAK抵达。 (注意跳过的行?) 我已经得到了完美的代码,除了我无法弄清楚如何让它去正确的地方的下一行。有没有办法在代码中执行此操作?或者是否有某种方式我需要输入我的输入(我是复制和粘贴)。或者我是否尝试做不可能的事情,应该只使用文本文件?

我的代码(原谅我的百万和2 if / 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 + " ");
         }
    }
}
}

1 个答案:

答案 0 :(得分:0)

而不是txt.hasNext()txt.next()使用txt.hasNextLine()txt.nextLine()。然后在while循环结束时,调用System.out.println()打印新行字符,因为您将在一行的末尾 你的代码应该是这样的(因为你现在必须手动遍历每个char):

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

         }
    }
    }
}