0

我目前有一个问题。我有一个程序可以从控制台读取一段(不是文本文件)。输入段落包括新行。我需要输出看起来完全像输入(我在这里切换 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 + " ");
         }
    }
}
}
4

1 回答 1

0

而不是txt.hasNext()andtxt.next()使用txt.hasNextLine()and 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);

         }
    }
    }
}
于 2013-10-11T04:24:39.157 回答