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