我正在提供这个输入“欢迎来到HackerRank的Java教程!”进入但
仅通过扫描仪类打印“欢迎”字符串。
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();
String s = scan.nextLine();
scan.close();
// Write your code here.
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
如何解决这个问题?
答案 0 :(得分:1)
当在读取输入令牌和读取整行输入之间切换时,您需要再次调用nextLine()
,因为扫描器对象将读取其先前读取停止的行的其余部分。
如果该行没有任何内容,它只会消耗换行符并移动到下一行的开头。
双重声明后,你必须写:scan.nextLine();
答案 1 :(得分:1)
请写下面的代码..它会工作!!
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
scan.nextLine();
String s = scan.nextLine();
scan.close();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
注意:如果在nextInt()或nextDouble()[读取输入令牌并读取整行输入]方法后立即使用nextLine()方法,请记住nextInt()或者nextDouble()读取整数标记;因此,该行整数或双输入的最后一个换行符仍然在输入缓冲区中排队,下一个nextLine()将读取整数或双行的余数。所以,你需要再次调用nextLine()。
答案 2 :(得分:0)
关键是你的字符串不包含整数和输入行上的double值。
如果您提供12 2.56 Welcome to HackerRank's Java tutorials!
,则可以使用:
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
scan.nextLine();
String s = scan.nextLine();
scan.close();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
请参阅Java demo
输出:
String: Welcome to HackerRank's Java tutorials!
Double: 2.56
Int: 12
如果您想确保解析字符串,请使用hasNext
方法(hasNextInt()
和hasNextDouble()
)检查下一个标记:
Scanner scan = new Scanner(System.in);
int i = 0;
if (scan.hasNextInt())
i = scan.nextInt();
double d = 0d;
if (scan.hasNextDouble())
d = scan.nextDouble();
String s = scan.nextLine();
scan.close();
见demo。
答案 3 :(得分:0)
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("\nEnter The String= ");
String s = scan.nextLine();
System.out.println("\nEnter The int= ");
int i = scan.nextInt();
System.out.println("\nEnter The Double= ");
double d = scan.nextDouble();
scan.close();
// Write your code here.
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}