import java.util.Scanner;
public class servlt {
public static void main (String args[]){
Scanner in1 = new Scanner(System.in);
int t = in1.nextInt();
int n=0, m=0;
String input[] = new String[t];
for ( int i = 0; i<t; i++){
input[i] = in1.nextLine();
}
}
}
input[0]
中没有任何内容存储。我可以知道为什么吗?
答案 0 :(得分:2)
将您的代码更改为
int t = in1.nextInt();
in1.nextLine();
它需要吞下换行符
答案 1 :(得分:0)
nextInt()不会消耗\ n(新行),然后nextLine将从行数中消耗\ n字符(由nextInt左侧)。您可以在nextInt()之后立即使用Integer.parseInt(in1.nextLine())或另一个in1.nextLine()来使用\ n char。
跟踪代码
Scanner in1 = new Scanner(System.in);
int t = in1.nextInt(); // read a number (let say 3)
int n=0, m=0;
String input[] = new String[t];
for ( int i = 0; i<t; i++){
input[i] = in1.nextLine(); // the first time nextLine will read the \n char
// The second time an 1 ( for example )
// And the third time a 2 ( for example )\
}
// Finally you will have an array like this
// input[0] = "\n"
// input[0] = "1"
// input[0] = "2"
<强> FIX 强>
Scanner in1 = new Scanner(System.in);
int t = Integer.parseInt(in1.nextLine());
int n=0, m=0;
String input[] = new String[t];
for ( int i = 0; i<t; i++){
input[i] = in1.nextLine();
}
答案 2 :(得分:0)
此处是解决方案,只需将input[i] = in1.nextLine();
更改为input[i] = in1.next();
即可正常工作,我会在本地测试。
import java.util.Scanner;
public class servlt {
public static void main (String args[]){
Scanner in1 = new Scanner(System.in);
System.out.println("enter total number you want to store:: ");
int t = in1.nextInt();
int n=0, m=0;
String input[] = new String[t];
for ( int i = 0; i<t; i++){
System.out.println("enter "+i+"th number :");
input[i] = in1.next();
}
for (int j=0;j<t;j++)
{
System.out.println("input["+j+"] value is : "+input[j]);
}
}
}