Java .nextLine()方法不接受后续字符串输入
我有一个程序,要求用户输入数字和字符。为此,我使用了Scanner类。但当我接受两个后续字符串输入时,控制台只是移动并要求用户输入第二个字符串。用户无法输入第一个字符串。为了更具体,我在下面附上了我的代码Java .nextLine()方法不接受后续字符串输入,java,Java,我有一个程序,要求用户输入数字和字符。为此,我使用了Scanner类。但当我接受两个后续字符串输入时,控制台只是移动并要求用户输入第二个字符串。用户无法输入第一个字符串。为了更具体,我在下面附上了我的代码 import java.util.Scanner; class XYZ { public static void main(String args[]) { int x, y, z, b, c; String p, q; Scanne
import java.util.Scanner;
class XYZ {
public static void main(String args[]) {
int x, y, z, b, c;
String p, q;
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number");
b = sc.nextInt();
System.out.println("Enter a new number");
c = sc.nextInt();
System.out.println("Enter a String");
p = sc.nextLine();
System.out.println("Enter a new String");
q = sc.nextLine();
System.out.println("Enter a number");
x = sc.nextInt();
System.out.println("Enter 2nd number");
y = sc.nextInt();
System.out.println("Enter 3rd number");
z = sc.nextInt();
ABC a = new ABC();
a.PQR(b, c);
a.PQR(p, q);
a.PQR(x, y, z);
}
}
class ABC {
void PQR(int a, int b) {
int res = a + b;
System.out.println("The sum is" + " " + res);
}
void PQR(String a, String b) {
System.out.println("Thye concataneted string is" + a + " " + b);
}
void PQR(int a, int b, int c) {
int res = a * b * c;
System.out.println("The product is" + " " + res);
}
}
这是因为ScannernextLine方法不会使用输入的最后一个换行符,因此该换行符将在下次调用ScannernextLine时使用 或 如果在nextInt方法之后立即使用nextLine方法,请记住nextInt读取整数标记,因此,该整数输入行的最后一个换行符仍在输入缓冲区中排队,下一个nextLine将读取整数行的剩余部分,该整数行为空。 -hackerrank.com 更新: c=sc.nextInt之后; 你需要再加一句话,即
sc.nextLine();
嗯 您需要在呼叫nextLine后,对nextLine进行虚拟呼叫。nextInt没有考虑\n 或者,最好只使用nextLine接受所有输入,无论哪个输入需要是INT,只需使用:
int i = Integer.parseInt(**string**);
这有用吗
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
sc.nextLine();
double d = sc.nextDouble();
sc.nextLine();
String s = sc.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
要获取三行输入:int、double和String如果在nextInt方法之后立即使用nextLine方法,请记住nextInt读取整数标记;因此,整数输入行的最后一个换行符仍在输入缓冲区中排队,下一行将读取整数行的剩余部分,该行为空
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
scan.nextLine();
String s = scan.nextLine();
// Write your code here.
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
这就是为什么控制台要求用户输入第二个字符串,以便您可以使用
Scanner md = new Scanner(System.in);
int n = md.nextInt(); //before using the input stream for string
String st = md.nextLine();
那么,您对输入第一个字符串的建议是什么呢?请查找更新的答案。我已经虚拟调用了next,但仍然无法输入第一个字符串。我还想对整数和字符串输入使用相同的scanner类对象。@PratikPaul我错误地写了next而不是nextLine。对不起!在从控制台接收整数输入时,我广泛使用列出的替代方法。@PratikPaul Yep。对于您的目的来说,这确实是更好的方式。@zx485我将从下次开始做,谢谢