- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试了解这三种方法的工作原理。以下是我对它们的理解:
nextLine()
读取当前行的剩余部分,即使它是空的。 nextInt()
读取一个整数但不读取转义序列“\n”。 next()
读取当前行但不读取“\n”。 假设我有以下代码:
import java.util.Scanner;
public class Welcome2
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Next enter two words:");
int n;
String s1, s2;
n = keyboard.nextInt();
s1 = keyboard.next();
s2 = keyboard.nextLine();
System.out.println(" n is " + n + " s1 is " + s1 + " s2 is " + s2);
}
}
如果我的输入是:
2
Hi
Hello
然后我在屏幕上得到以下输出:
n is 2
s1 is hi
s2 is
为什么 s1
的值为“HI”?
这是否意味着方法 next()
读取下一行,即使第一行的转义字符还没有被 nextInt()
读取?
最佳答案
nextLine() reads the remainder of the current line even if it is empty.
正确。
nextInt() reads an integer but does not read the escape sequence "\n".
正确1。
next() reads the current line but does not read the "\n".
不正确。事实上,next()
方法读取下一个完整的标记。这可能是也可能不是当前行的其余部分。它可能会也可能不会消耗行尾,具体取决于行尾的位置。 javadoc 描述了准确的行为,您可能需要自己仔细阅读它才能完全理解其中的细微差别。
因此,在您的示例中:
nextInt() 调用消耗了 2
字符并离开了 NL
的位置。
next() 调用跳过 NL
,使用 H
和 i
,并将光标留在第二个 NL。
nextLine() 调用消耗了第二行的剩余部分;即 NL
。
1 ... 除了你的术语是错误的。读取数据时,它不是转义序列。它是一个行尾序列,可能由 CR、NL 或 CR NL 组成,具体取决于平台。您正在谈论的转义序列在 Java 源代码中,在字符串和字 rune 字中。它们可能 >> 代表 << CR 或 NL 或...其他字符。
关于java - 了解 Scanner 的 nextLine()、next() 和 nextInt() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798803/
scanner.Scanner 之间有什么区别?来自包裹text/scanner ,和一个 bufio . Scanner ? 最佳答案 text/scanner更适合阅读源代码,主要是 Go 源代码
我有以下代码: Scanner in = new Scanner (System.in); String[] data = new String[5]; System.out.println("Ple
我有 Java 代码,它要求用户输入,然后将此数据存储在字符串变量中。下面的函数是“number”类的一部分,并在主函数中调用。 public static void setVal(i
我正在编写一个java程序,它运行一个循环并不断询问用户输入。然后程序用该字符串执行一系列操作,并请求另一个字符串并重复。 问题是许多字符串非常相似,所以我想用循环中上次的输入填充提示。例如:如果用户
我在 O'Reillys Java Cookbook(第 2 版)中寻找一些好东西,发现 Scanner.create() 方法大约 10 次。但是在 API 或类声明\实现中没有这样的东西。例如:P
这个问题在这里已经有了答案: Scanner is skipping nextLine() after using next() or nextFoo()? (25 个答案) 关闭 4 年前。 im
这样做有什么好处/坏处吗? 通常,从流中读取时会抛出异常: try { inputStream.read(); }catch(IOException e) { e.printStack
Scanner console=new Scanner(System.in); System.out.print("how many:"); int n=console.nextInt(); cons
这个问题已经有答案了: Scanner is skipping nextLine() after using next() or nextFoo()? (25 个回答) 已关闭 6 年前。 我最近刚刚
Scanner input = new Scanner(System.in); 你能详细解释一下上面的代码一步一步做了什么吗?我真的不明白它是如何工作的以及它如何链接到我以后能够做这个声明: int
这个问题在这里已经有了答案: Scanner is skipping nextLine() after using next() or nextFoo()? (24 个答案) 关闭 6 年前。 我必
如果我在 java.util 上调用 scanner.hasNext(pattern),然后使用相同的模式调用 scanner.next(pattern),我会扫描两次吗?扫描仪 假设我有很多案例的这
这是我的问题: 我正在尝试使用 Scanner 和 System.in 从键盘获取输入并将其分配给 int 变量。 这就是我所拥有的(完整的程序如下): // this program will us
使用 try(Scanner scan = new Scanner(System.in)) { } 导致 Exception in thread "main" java.util.NoSuchElem
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
此问题仅用于教育目的。我从 Java 教科书中获取了以下代码,我很好奇为什么在 catch block 中使用了 input.nextLine()。 我尝试使用 input.nextInt() 代替它
这个问题已经有答案了: How to use java.util.Scanner to correctly read user input from System.in and act on it?
我的教授倾向于执行以下操作以从用户那里获取数字: Scanner scanner = new Scanner(System.in); Integer.parseInt(scanner.nextLine
我在使用 Scanner 时出现奇怪的行为。当我使用 Scanner(FileInputStream) 构造函数时,它将与我正在使用的一组特定文件一起使用,但它不适用于 Scanner(File) 构
D 中是否有类似于 Java 扫描仪的流解析器?您可以去哪里nextInt()获取 int和 nextLong()对于 long , 等等。 最佳答案 std.conv.parse 类似: http:
我是一名优秀的程序员,十分优秀!