点击进入后,Java Scanner不接受String

时间:2016-05-31 18:27:25

标签: java java.util.scanner

在这个片段中,我正在做的是采用三种不同类型的变量并添加它们然后再打印下来。

 public static void main(String[] args) {
    int i = 4;
    double d = 4.0;
    String s = "HackerRank ";
    Scanner scan = new Scanner(System.in);      
    int firstVariable = 0;
    double secondVariable = 0.0;       
    String theString = "";

    firstVariable = scan.nextInt();
    secondVariable = scan.nextDouble();
    theString = scan.nextLine();

    System.out.println(firstVariable+i);
    System.out.println(secondVariable+d);
    System.out.println(s+""+theString);

}

我正在为firstVariable提供输入,然后输入secondVariable,然后在我点击后输入theString正在捕获该值(我知道它应该捕获它)。
编辑:在这种情况下,我应该如何提供theString 的输入,而不是空间

我确实尝试过这样的事情,

    while(scan.hasNext())
        theString = scan.nextLine();

但它也没有用。

3 个答案:

答案 0 :(得分:3)

只需检查scan.nextLine()为空,如果是,请再次呼叫secondVariable = scan.nextDouble(); theString = scan.nextLine().trim(); if (theString.isEmpty()) { theString = scan.nextLine(); }

pattern

使用firstVariable = scan.nextInt(); secondVariable = scan.nextDouble(); theString = scan.next("\\w+");

的另一种方法
{{1}}

答案 1 :(得分:1)

有两种方法可以解决您的问题:

第一个是使用

int firstVariable = scan.nextInt();
scan.nextLine();
double secondVariable = scan.nextDouble();
scan.nextLine();
String theString = scan.nextLine();

每次从用户那里读到这样的内容:

int firstVariable = Integer.parseInt(scan.nextLine());
Double secondVariable = Double.parseDouble(scan.nextLine());
String theString = scan.nextLine();

第二个是解析nextLine()中的整数和double值,如下所示:

jQuery('.latest_post_text_inner').each(function(){ 
    var _linkUrl = jQuery(this).find('.latest_post_title a').attr('href');
    jQuery(this).find('.post_infos').text(_linkUrl);
});

答案 2 :(得分:0)

您需要在String theString之前添加额外的scan.nextLine();,以便在double之后捕获Enter。像这样:

firstVariable = scan.nextInt();
secondVariable = scan.nextDouble();
scan.nextLine();
theString = scan.nextLine();

就像减少代码的建议一样,没有必要添加这些:

int firstVariable = 0;
double secondVariable = 0.0;       
String theString = "";

只需将类型添加到变量以捕获扫描:

int firstVariable = scan.nextInt();
double secondVariable = scan.nextDouble();
scan.nextLine();
String theString = scan.nextLine();