【问题标题】:input whitespace from console in java [duplicate]在java中从控制台输入空格[重复]
【发布时间】:2016-04-27 11:50:13
【问题描述】:

如果我从控制台输入空格, 控制台将其打印为字符串。但是,如果我直接这样做,它可以正常工作。为什么 ?如何从控制台输入中将空格打印为空格?

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    System.out.print("Input Whitespace :");
    String ss = sc.nextLine();//input whitespace from console 
    String st ="\n \t";//input whitespace directly 
    System.out.println("print whitespace direcly :"+st+"print whitespace from console : "+ss);

}

输入:输入空格:\n \t

输出:直接打印空格: 从控制台打印空格:\n \t

【问题讨论】:

  • 我直接调用它:String st ="\n \t";
  • 您输入的\n 不是有效的空格,它只是一个反斜杠和一个没有任何意义的“n”。这同样适用于您的输入\t
  • 如果不是有效空格,如何从控制台输入有效空格?
  • 您的输入将是\\n(因为输入的反斜杠将被转义)并且您需要“转换”它。链接的副本解释了如何做到这一点。
  • 谢谢你的帮助@Tom

标签: java whitespace


【解决方案1】:

是的,现在它可以工作了:

    ss=ss.replace("\n", "\\n");
    ss=ss.replace("\t", "\\t");
    ss=ss.replace("\f", "\\f");
    ss=ss.replace("\r", "\\r");
    ss=ss.replace("\\n", "\n");
    ss=ss.replace("\\t", "\t");
    ss=ss.replace("\\f", "\f");
    ss=ss.replace("\\r", "\r");

【讨论】:

  • 你能解释一下前四行的目的是什么吗? ss 不包含这些空格,因此您无需替换它们。
  • 因为我想使用 \n,\t,\f,\r 作为空格。所以,我必须这样做。否则,空白(换行符,制表符)不只打印 \n \t \r \f 正在打印。
  • @tom 。我想你无法理解我的问题。
  • “我认为你无法理解我的问题” 不,你不明白自己在做什么。当您想要转换手动输入的\n(或空格表示)字符串时,前四行是无用的。您只需要后四个replace 调用。
猜你喜欢
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多