无法用Java合并两个句子

时间:2018-09-21 12:36:45

标签: java string java.util.scanner

我想连接两个两个字符串。

这是我的代码:

import java.io.*;
import java.util.*;

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);    
        int a; double b;  String c;
        a = scan.nextInt();
        b = scan.nextDouble();
        c = scan.next();
        System.out.println(i + a);
        System.out.println(d + b);
        String res = s.concat(c);
        System.out.println(res);       
        scan.close();
    }
} 

输入:

12
4.0
is the best place to learn and practice coding!

此输出:

16
8.0
HackerRank is

Output

我竭尽所能。

5 个答案:

答案 0 :(得分:0)

编辑:

如果更改为nextLine(),则先前的输入不会占用换行符,因此您必须添加额外的scan.nextLine();

See demo online


首先,声明c(即String c),同时声明ab(或者也许您这样做了,但是忘记了将其放在您的帖子中?)< / p>

但是,您的问题是使用Scanner::next而不是Scanner::nextLine

.next()来自docs

  

从此扫描器中查找并返回下一个完整令牌。

.next()采用第一个标记,使用空格作为定界符,因此这就是为什么您的输出为HackerRank is的原因,假设您的c持有is a great site之类的东西。

解决方案

更改:

c = scan.next();c = scan.nextLine();

答案 1 :(得分:0)

你在这里..

    public static void main(String[] args) {
        int i = 4;
        double d = 4.0;
        String s = "HackerRank ";
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        double b = scan.nextDouble();
        scan.nextLine();
        String c = scan.nextLine();
        System.out.println(i + a);
        System.out.println(d + b);
        String res = s + c;
        System.out.println(res);
        scan.close();


    }
}

,然后查看以下结果:successfully accepted result:

  

那是因为Scanner.nextInt或nextDouble方法不占用最后一个   输入的换行符,因此换行在   下次调用Scanner.nextLine

答案 2 :(得分:0)

import java.util.*;
import java.lang.*;
import java.io.*;

class ScannerDemo
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int i = 4;
        double d = 4.0;
        String s = "HackerRank ";
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        double b = scan.nextDouble();
        scan.nextLine();
        String c = scan.nextLine();
        System.out.println(i + a);
        System.out.println(d + b);
        String res = s.concat(c);
        System.out.println(res);
        scan.close();
    }
}

您的输入必须是

12
4.0
is the best place to learn and practice coding!

输出将是:

16 8.0 HackerRank is the best place to learn and practice coding!

答案 3 :(得分:0)

在扫描c之前再扫描一行。 像

scan.nextLine();
c = scan.nextLine();

由于在输入c之前按回车键,所以需要输入行。

答案 4 :(得分:-1)

int a = scan.nextInt();
double b = scan.nextDouble();
String c = scan.next();

您必须像我一样定义此变量