不能用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();