我有一个程序要求用户输入数字和字符。为此我使用Scanner
类。但是当我接受两个后续字符串输入时,控制台只是移动并要求用户输入第二个字符串。用户无法输入第一个字符串。我已将下面的代码附加到更具体的位置。
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);
}
}
答案 0 :(得分:2)
这是因为Scanner#nextInt方法不消耗输入的最后一个换行符,因此在下次调用Scanner#nextLine时会消耗该换行符。
OR
如果在nextInt()方法之后立即使用nextLine()方法,请回想一下nextInt()读取整数标记,因此,该行整数输入的最后一个换行符仍然在输入缓冲区中排队,下一个nextLine()将读取整数行的剩余部分(为空)。 - hackerrank.com
更新:
c = sc.nextInt();
之后
你还需要再说一遍,即
sc.nextLine();
HTH!
答案 1 :(得分:2)
在致电nextLine()
后,您需要拨打nextInt()
来拨打电话。 nextInt()
并未取得" \ n"考虑到了。
或者,最好只使用nextLine()
接受所有输入以及需要ints
的任何输入,只需使用:
int i = Integer.parseInt(**string**);
这有帮助吗?
答案 2 :(得分:2)
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);
}
}
答案 3 :(得分:1)
read -r -a astuff <<< "$stuff"
取三行输入:int,double和String
答案 4 :(得分:1)
如果在nextLine()
方法之后立即使用nextInt()
方法,请记住nextInt()
读取整数令牌;因此,该整数输入行的最后一个换行符仍在输入缓冲区中排队,下一个nextLine()
将读取整数行的其余部分(为空)。
这就是为什么控制台要求用户输入第二个字符串,所以您可以使用
Scanner md = new Scanner(System.in);
int n = md.nextInt(); //before using the input stream for string
String st = md.nextLine();