我试图以2d数组的形式存储人员的姓名和地址,但是当我运行代码时,它仅接受较少的值。例如,如果我给数组2行2列,则它仅接受3个值。
我尝试在其他论坛上进行搜索,但找不到正确的答案。 我还更改了尺寸值,但它只会给出错误的结果。
import java.util.*;
class findme{
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
System.out.print("enter the number of person: ");
int per=scan.nextInt();
System.out.print("enter the number of address: ");
int addr=scan.nextInt();
String addrs[][]=new String[per][addr];
for(int i=0;i<per;i++){
for(int j=0;j<addr;j++){
addrs[i][j]=scan.nextLine();
}
}
}
}
答案 0 :(得分:2)
您读取了4个值,但是当您按int addr=scan.nextInt();
的Enter键时,其中的一个空行
一种快速的解决方法是读取空行
import java.util.*;
class findme{
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
System.out.print("enter the number of person: ");
int per=scan.nextInt();
System.out.print("enter the number of address: ");
int addr=scan.nextInt();
---> scan.nextLine();
String addrs[][]=new String[per][addr];
for(int i=0;i<per;i++){
for(int j=0;j<addr;j++){
addrs[i][j]=scan.nextLine();
}
}
}
}
编辑:
或者您可以使用scanner.skip
Skip newline character while reading from Scanner class
答案 1 :(得分:0)
除了其他答案外,您的代码应如下所示:
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of people: ");
int iPeople = scanner.nextInt();
System.out.print("Enter the number of address: ");
int iAdresses =scanner.nextInt();
scanner.nextLine();
String data[][] = new String[iPeople][iAdresses];
for(int i=0; i < iPeople; i++)
{
for(int j=0; j < iAdresses; j++)
{
System.out.printf("Enter %d address for person %d:%n", j + 1, i + 1);
data[i][j] = scanner.nextLine();
}
}
并尝试遵循以下约定:
答案 2 :(得分:0)
如果您想了解原因,请在此处说明nextLine
的行为:Java Scanner doesn't wait for user input
您也可以将nextLine
替换为next
来避免这种情况。