我正在使用这些Scanner方法nextInt()并nextLine()阅读输入.
它看起来像这样:
System.out.println("Enter numerical value");
int option;
option = input.nextInt(); // Read numerical value from input
System.out.println("Enter 1st string");
String string1 = input.nextLine(); // Read 1st string (this is skipped)
System.out.println("Enter 2nd string");
String string2 = input.nextLine(); // Read 2nd string (this appears right after reading numerical value)
Run Code Online (Sandbox Code Playgroud)
问题是输入数值后,第一个input.nextLine()被跳过而第二个input.nextLine()被执行,所以我的输出如下所示:
Enter numerical value
3 // This is my input
Enter 1st string // The program is supposed to stop here and …Run Code Online (Sandbox Code Playgroud) 据我所知,从Java文件中读取基于字符的数据的两种最常用的方法是使用Scanner或BufferedReader.我也知道BufferedReader通过使用缓冲区来有效地读取文件以避免物理磁盘操作.我的问题是:
Scanner执行以及BufferedReader?Scanner,BufferedReader反之亦然?我如何使用Scanner该类从控制台读取输入?像这样的东西:
System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code
Run Code Online (Sandbox Code Playgroud)
基本上,我想要的只是让扫描程序读取用户名的输入,并将输入分配给String变量.
我刚刚学习了Java的Scanner类,现在我想知道它如何与StringTokenizer和String.Split进行比较/竞争.我知道StringTokenizer和String.Split只适用于字符串,那么为什么我要将扫描器用于字符串呢?Scanner只是打算一站式购物吗?
我试图找到一种char从键盘输入的方法.
我试过用:
Scanner reader = new Scanner(System.in);
char c = reader.nextChar();
Run Code Online (Sandbox Code Playgroud)
此方法不存在.
我试着把它c作为一个String.然而,它并不总是适用于所有情况,因为我从我的方法调用的另一种方法需要一个char输入.因此,我必须找到一种方法来明确地将char作为输入.
有帮助吗?
尝试使用java.util.Scanner中的nextLine()方法时遇到了麻烦.
这是我尝试过的:
import java.util.Scanner;
class TestRevised {
public void menu() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
}
Run Code Online (Sandbox Code Playgroud)
示例#1:此示例按预期工作.String sentence = scanner.nextLine();在继续之前,该行等待输入输入System.out.print("Enter an index:\t");.
这会产生输出:
Enter a sentence: Hello.
Enter an index: 0
Your sentence: Hello.
Your index: 0
Run Code Online (Sandbox Code Playgroud)
// Example #2
import java.util.Scanner;
class Test {
public void menu() {
Scanner scanner …Run Code Online (Sandbox Code Playgroud) 什么是标准输入逐行读取的Scala配方?类似于等效的java代码:
import java.util.Scanner;
public class ScannerTest {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.nextLine());
}
}
}
Run Code Online (Sandbox Code Playgroud) next()和之间的主要区别是nextLine()什么?
我的主要目标是使用Scanner可以"连接" 到任何源(例如文件)的所有文本来阅读.
我应该选择哪一个?为什么?
对于一个scanner对象,该hasNextLine()方法返回false时该hasNext()方法返回true是怎么回事?
注意:根据输入文件,该hasNext()方法将按预期返回结果; 在hasNextLine()似乎没有被返回正确的结果.
这是我正在运行的代码,它创建了以下结果:
public void ScannerTest(Reader fileReaderObject){
Scanner scannerObj = new Scanner(fileReaderObject);
for(int i = 1; scannerObj.hasNext(); i++){
System.out.println(i + ": " + scannerObj.next());
System.out.println("Has next line: " + scannerObj.hasNextLine());
System.out.println("Has next: " + scannerObj.hasNext());
}
System.out.println();
scannerObj.close();
}
Run Code Online (Sandbox Code Playgroud)
以下是我传递给此扫描器的文件的实际内容:
a 3 9
b 3 6
c 3 3
d 2 8
e 2 5
f 2 2
g 1 7
h 1 4
i 1 1
Run Code Online (Sandbox Code Playgroud)
当我尝试使用Scanner以下方法获取用户输入时,我遇到了一个问题:
import java.util.Scanner;
public class Main
{
public static Scanner input = new Scanner(System.in);
public static void main(String[] args)
{
System.out.print("Insert a number: ");
int number = input.nextInt();
System.out.print("Text1: ");
String text1 = input.nextLine();
System.out.print("Text2: ");
String text2 = input.nextLine();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Insert a number: 55
Text1: Text2: Hi there!
Run Code Online (Sandbox Code Playgroud)
如您所见,该程序已跳过String text1 = input.nextLine();.这里有什么问题?以及如何解决这个问题?