扫描仪类中的输出未向字符串提供正确的输出

时间:2017-06-20 07:26:26

标签: java string java.util.scanner

public class Solution {

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

        /* Read and save an integer, double, and String to your variables.*/
        int j=scan.nextInt();
        double p=scan.nextDouble(); 
        String n=scan.nextLine();
        // Note: If you have trouble reading the entire String, please go back and 
        // review the Tutorial closely.

        /* Print the sum of both integer variables on a new line. */
        int k=i+j;
        System.out.println(""+k);

        /* Print the sum of the double variables on a new line. */
        double o=p+d;
        System.out.println(""+o);

        /* Concatenate and print the String variables on a new line; 
           the 's' variable above should be printed first. */
        String s3=s.concat(n);
        System.out.println(s3);
        scan.close();
    }
}

我在给定代码的输入中输入字符串的问题虽然sccaner没有打印整行。我尝试使用nextLine()但仍然无法正常工作 因为我必须打印整个字符串。

- Input (stdin)
   12
   4.0 
   is the best place to learn and practice coding! 
   Your Output (stdout) 
   16
   8.0
   HackerRank   
   Expected Output 
   16
   8.0 
   HackerRank is the best place to learn and practice coding!

1 个答案:

答案 0 :(得分:0)

documentation of nextLine(< ==你应该阅读的链接)说:

  

使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

在上面的例子中,它返回“4.0”之后的其余行,这是空字符串。

显然,输入标记由换行符分隔,因此在创建扫描程序后添加第二行:

// ...
Scanner scan = new Scanner(System.in);
scan.useDelimiter("\\n");
// ...

模式"\\n"表示反斜杠后跟'n',它被解释为换行符,请参阅Pattern

(解决方法/黑客:而不是useDelimiter,只需忽略该行的其余部分并使用第二个nextLine() - 而不是 nifty