我试图理解java中的Scanner类,在一些例子中尝试我对下面两个程序的模糊性,在逻辑上我没有看到任何差异,但输出告诉我有一些我缺少的东西。请帮帮我
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="sendmsg">
<textarea id="sendtext" value="">
</textarea>
<div class="clearBoth"></div>
</div>
以上程序正在打印输出
public static void main(String args[]) {
Scanner scanner1=new Scanner(System.in);
String s=scanner1.nextLine();
scanner1.close();
// create a new scanner with the specified String Object
Scanner scanner = new Scanner(s);
// print the next line
System.out.println("" + scanner.nextLine());
// check if there is a next line again
System.out.println("" + scanner.hasNextLine());
// print the next line
System.out.println("" + scanner.nextLine());
// check if there is a next line again
System.out.println("" + scanner.hasNextLine());
// close the scanner
scanner.close();
}
虽然下面的程序我没有看到与上面的任何差异显示不同的输出
Hello World! \n 3+3.0=6
Hello World! \n 3+3.0=6
false
以上程序的输出是
public static void main(String[] args) {
String s="Hello World! \n 3 + 3.0 = 6";
// create a new scanner with the specified String Object
Scanner scanner = new Scanner(s);
// print the next line
System.out.println("" + scanner.nextLine());
// check if there is a next line again
System.out.println("" + scanner.hasNextLine());
// print the next line
System.out.println("" + scanner.nextLine());
// check if there is a next line again
System.out.println("" + scanner.hasNextLine());
// close the scanner
scanner.close();
}
答案 0 :(得分:2)
如果在文件中写入\ n,则无法使用nextLine()[使用两个反斜杠,它将为您提供 java.util.NoSuchElementException ],因为没有\ n(结束(但是)有\ n(两个反斜杠)。 要读取文件并将文本中的\ n替换为实际的EOL,您可以将sc.useDelimiter(&#34; \\ n&#34;)用于新行,但它可能会破坏扫描程序的功能。一些方法。
Scanner s = new Scanner("Hello World! \\n 3 + 3.0 = 6");
s.useDelimiter("\\\\n");
System.out.println(s.next());
System.out.println(s.next());
将为您提供类似
的输出Hello World!
3 + 3.0 = 6
答案 1 :(得分:0)
我假设您在第一个代码段中输入Hello World! \n 3+3.0=6
到标准输入。 &#34; \ n&#34;在这种情况下,它不被解析为新行(它被解析为字符&#39; \&#39;后跟字符&#39; n&#39;)。键入&#34; Hello World后,您必须按下Enter按钮! &#34;为了让扫描仪将输入分成两行。
另一方面,当扫描仪从字符串中获取输入时,&#34; \ n&#34;被视为换行符。
哦,看来你的第一个片段中有一个拼写错误。我假设您使用的扫描程序从System.in
获取其输入(您可能将两个代码段的代码混合在一起)。