代码hackerrank day1 30天

时间:2016-12-31 07:04:28

标签: java

我正在解决这个hackerrank 30天的代码挑战。代码如下:

import java.util.*;

public class jabcexample1 {
    public static void main(String[] args) {
        int i = 4;
        double d = 4.0;
        String s = "HackerRank ";

        /* Declare second integer, double, and String variables. */
        try (Scanner scan = new Scanner(System.in)) {
            /* Declare second integer, double, and String variables. */
            int i2;
            double d2;
            String s2;

            /* Read and save an integer, double, and String to your variables.*/
            i2 = scan.nextInt();
            d2 = scan.nextDouble();

            scan.nextLine(); // This line
            s2 = scan.nextLine();

            /* Print the sum of both integer variables on a new line. */
            System.out.println(i + i2);

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

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

在这段代码中,我添加了一个额外的行scan.nextLine();,因为没有它,编译器甚至不会注意到s2 = scan.nextLine();的下一行。为什么编译器在没有编写s2=scan.nextLine();的情况下没有注意到scan.nextLine();

1 个答案:

答案 0 :(得分:3)

这与编译器无关,也与Scanner的行为无关。

如果您阅读Java文档,您将看到Sanner.nextLine()

  

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

现在你可能想知道在你打电话后剩下的是什么了

i2 = scan.nextInt();
d2 = scan.nextDouble();

在这种情况下,它是回车符。调用scan.nextLine()读取这些字符并将位置设置为下一行的开头。