import java.util.*;
class DataTypes {
public static void main(String args[]) {
int i = 4;
double d= 4.0;
String s = "Hackerrank";
Scanner scan = new Scanner(System.in);
int j = scan.nextInt();
double d1 = scan.nextDouble();
String s1 = new String();
s1 = scan.nextLine();
j = j+i;
System.out.println(j);
d1 = d1+d;
System.out.println(d1);
System.out.println(s+" "+s1);
scan.close();
}
}
看到上面的代码它没有错误但是在我输入double之后程序没有读取它直接显示输出的字符串。但是当我评论int和double的扫描语句时,程序会读取我的字符串。为什么会这样?
答案 0 :(得分:6)
您没有按照自己的意愿阅读字符串,只需使用下面的代码即可使其正常工作
s1 = scan.next();
有关详细信息,请参阅此link
编辑:
如果您的输入包含带空格的字符串,则可以执行以下操作:
scan.nextLine();
s1 = scan.nextLine();
这是因为nextDouble()
,此方法不会消耗输入的最后一个换行符,因此在下次调用nextLine()
时会消耗该换行符。在读取String之前添加newLine()
将使用新的Line,您将能够输入String。
答案 1 :(得分:0)
更改此行
s1 = scan.nextLine();
到
s1 = scan.next();
答案 2 :(得分:0)
试试这个:
import java.util.*;
class Demo{
public static void main(String args[]){
int i = 4;
double d= 4.0;
String s = "Hackerrank";
Scanner scan = new Scanner(System.in);
int j = scan.nextInt();
double d1 = scan.nextDouble();
String s1 = scan.next();
j = j+i;
System.out.println(j);
d1 = d1+d;
System.out.println(d1);
System.out.println(s+" "+s1);
scan.close();
}
}
答案 3 :(得分:0)
更改行
s1 = scan.nextLine();
到下面的行
s1 = scan.next();
会奏效。
答案 4 :(得分:0)
这是因为你输入:,所以直到获得新行它不能进入下一行 所以对于非字符串使用示例:
int j = scan.nextInt(); scan.nextLine();
import java.util.*;
class DataTypes {
public static void main(String args[]) {
int i = 4;
double d = 4.0;
String s = "Hackerrank";
Scanner scan = new Scanner(System.in);
// System.out.print("Enter j: ");
int j = scan.nextInt();
scan.nextLine();
// System.out.print("Enter dl: ");
double d1 = scan.nextDouble();
scan.nextLine();
String s1 = new String();
// System.out.print("Enter s1: ");
s1 = scan.nextLine();
j = j + i;
System.out.println(j);
d1 = d1 + d;
System.out.println(d1);
System.out.println(s + " " + s1);
scan.close();
}
}
答案 5 :(得分:0)
将此行替换为
double d1 = Double.parseDouble(scan.nextLine());
答案 6 :(得分:0)
出现此问题是因为对nextDouble
的调用只会消耗数字本身,而不仅仅是后面的换行符。
发生这种情况:
0.1\n
0.1\n
\n
推回到它的缓冲区\n
对此有不同的解决方案:
在输入中的数字后面直接添加字符串:
1 3.5I'm a short string
手动使用代码中不需要的行字符:
double d1 = scan.nextDouble();
scan.nextLine();
String s1 = scan.nextLine();
调用next而不是nextLine:
注意,这一次只消耗1个字
double d1 = scan.nextDouble();
String s1 = scan.next();
使用对下一行的调用阅读双精简版:
这会将您的程序限制为换行符分隔数字,而不是允许任何分隔符:
int j = Integer.parseInteger(scan.nextLine());
double d1 = Double.parseDouble(scan.nextLine());
String s1 =scan.nextLine();