没有得到Java的预期输出

时间:2016-09-22 06:12:16

标签: java string java.util.scanner

输入格式

  • 第一行包含一个整数。
  • 第二行包含一个双精度数。
  • 第三行包含一个字符串,。

输出格式

在第一行打印两个整数的总和,在第二行打印两个双打(缩放到小数位)的总和,然后在第三行打印两个连接的字符串。这是我的代码

package programs;

import java.util.Scanner;


public class Solution1 {

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

        Scanner scan = new Scanner(System.in);
        int i1 = scan.nextInt();
        double d1 = scan.nextDouble();
        String s1 = scan.next();

        int i2 = i + i1;
        double d2 = d + d1;
        String s2 = s + s1;
        System.out.println(i2);
        System.out.println(d2);
        System.out.println(s2);
        scan.close();
    }
}

输入(stdin)

12
4.0
are the best way to learn and practice coding!

你的输出(标准输出)

16
8.0
programs are

预期产出

16
8.0
programs are the best place to learn and practice coding!

4 个答案:

答案 0 :(得分:3)

Scanner.next()读取下一个令牌。默认情况下,空格用作标记之间的分隔符,因此您只能获得输入的第一个单词。

听起来您想要阅读整个,因此请使用Scanner.nextLine()。根据{{​​3}},您需要拨打nextLine()一次,以便在double之后使用换行符。

// Consume the line break after the call to nextDouble()
scan.nextLine();
// Now read the next line
String s1 = scan.nextLine();

答案 1 :(得分:3)

您正在使用scan.next(),它以空格作为分隔符读取每个值。

但是在这里你需要读完整行,所以使用

String s1 = scan.nextLine();

答案 2 :(得分:1)

您需要做的就是改变

String s1 = scan.next();

    String s1 = scan.nextLine();

答案 3 :(得分:1)

您需要使用scan.nextLine(),它将读取一个完整的行和scan.next()读取值,每个值都带有空格作为分隔符。

package programs;

import java.util.Scanner;


public class Solution1 {

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

        Scanner scan = new Scanner(System.in);
        int i1 = scan.nextInt();
        double d1 = scan.nextDouble();
        String s1 = scan.nextLine();

        int i2 = i + i1;
        double d2 = d + d1;
        String s2 = s + s1;
        System.out.println(i2);
        System.out.println(d2);
        System.out.println(s2);
        scan.close();
    }
}