使用Scanner类打印字符串

时间:2016-08-17 19:29:16

标签: java string printing

我正在提供这个输入“欢迎来到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);
    }
}

如何解决这个问题?

4 个答案:

答案 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);
    }
}