Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不能用Java表达两句话_Java_String_Java.util.scanner - Fatal编程技术网

不能用Java表达两句话

不能用Java表达两句话,java,string,java.util.scanner,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(Sy

我想把两根弦连在一起

这是我的代码:

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
我想尽了一切办法。

编辑:

如果更改为nextLine,则前面的输入不会使用换行符,因此必须添加额外的scan.nextLine

首先,声明c,即字符串c,还有a和b,或者你这么做了,但忘了把它放在你的帖子里

但是,您的问题是使用而不是

.下一步:

查找并返回此扫描程序中的下一个完整令牌

.next使用第一个标记,使用空格作为分隔符,所以这就是为什么您的输出是HackerRank is,假设您的c持有类似是一个很棒的站点的东西

解决方案

更改:

c=扫描。下一步;至c=扫描下一行

给你

    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();


    }
}
结果如下:

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

你必须像我一样定义这个变量

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!

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


因为在输入c之前按enter键,会有一行输入。

这段代码甚至不会编译。您正在将scan.next分配给c,而c未声明。您能否共享HackerRank链接@Ravi Kumar'link:@Jarvisi已编辑该链接,但仍无法运行@johnczukkermann至少它现在将运行!它不起作用,因为您先打印i+a,然后是d+b,然后是HackerRank+c的串联。为什么你认为它会做任何不同于你所说的事情呢。你还没有告诉使用你期望得到的输出。连接两个字符串:字符串s=a;字符串t=b;字符串u=c!;stringv=s+t+u:在Java中有几种连接字符串的方法。这只是一种方式。你也可以用concat。您也可以使用StringBuilder的append方法。仍然无法工作输出:16 8.0HackerRank@RaviKumar如果您显示实际代码和输入的内容,会更容易提供帮助。@RaviKumar请参见顶部的“我的编辑”。它解决了您的问题。谢谢,我不明白为什么要使用额外的扫描。nextLine@achAmháinI会说这不是主要问题,因为OP得到了一个输出,如果他们不声明变量,它就不会编译。我已经标记了变量,只是忘了复制那一行
16 8.0 HackerRank is the best place to learn and practice coding!
scan.nextLine();
c = scan.nextLine();