nextLine如何与扫描仪配合使用?

时间:2013-03-10 21:41:03

标签: java split

我试图通过使用空格作为分隔符将“sisestus”分成不同的单词,但是只使用sc.next()不允许我输入带空格的字符串,所以我读到我应该使用.nextLine (),但它根本不起作用。我该如何解决?

public class Sisestamine {
int read;
int veerud;
double Maatriks[][];
java.util.Scanner sc = new java.util.Scanner(System.in);

Sisestamine() {
    System.out.println("Enter matrix dimensions (format NxM)");

    String[] abi = sc.next().split("x");
    this.read = Integer.parseInt(abi[0]);
    this.veerud = Integer.parseInt(abi[1]);
    this.Maatriks = new double[read][veerud];

    System.out.println("Enter the matrix: (x x x x etc..)");
    for (int i = 0; i < read; i++) {
        String sisestus = sc.next();
                  //String sisestus = sc.nextLine(); 
        abi = sisestus.split(" "); 
        System.out.print(abi);
        for (int j = 0; j < abi.length; j++) {
            this.Maatriks[i][j] = Double.parseDouble(abi[j]);
        }
     }
   }
 }

1 个答案:

答案 0 :(得分:1)

您的问题可能是因为您在程序的某个部分使用sc.next(),然后在sc.nextLine()之后使用next(),第二次调用吞下了挂起的行尾(EOL)令牌事先致电sc.nextLine()。解决方案是对所有调用使用sc.next()。换句话说,将所有 sc.nextLine()更改为{{1}}。