首页 > 解决方案 > 如何解决二维数组的问题

问题描述

嘿,我想为朋友编写一个程序来管理他的交易卡,但在编写二维数组时遇到了问题。[0][0] 和 [0][1] 得到正确保存和处理,但在循环的第二次迭代中,它给出以下错误代码:

***Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at benni/benni.Main.main(Main.java:13)***


package benni;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class Main {
public static void main(String[] args) {    
    String[][] inventory = new String[1000][2];     
    for(int i=0;i<999;i++) {    
        try (Scanner inp = new Scanner(System.in)) {
            String cn = inp.next(); 
            System.out.println("Cardname: "+cn);
            inventory[i][0]=cn;
            int fq = inp.nextInt();
            String fq2 = Integer.toString(fq);
            inventory[i][1]=fq2;
            System.out.println("Frequency: "+fq2);          
        }               
    }
}

标签: javaarrays

解决方案


您需要小心,.nextInt()因为它不会消耗换行符。您应该总是在.nextLine()之后调用以使用换行符。

如果您知道您的输入是完美的,则此方法有效:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class Test {
    public static void main(String[] args) {    
        String[][] inventory = new String[1000][2];     

        Scanner inp = new Scanner(System.in);

        for(int i=0;i<999;i++) {    
            String cn = inp.nextLine(); 
            System.out.println("Cardname: "+cn);
            inventory[i][0]=cn;
            int fq = inp.nextInt();
            inp.nextLine();
            String fq2 = Integer.toString(fq);
            inventory[i][1]=fq2;
            System.out.println("Frequency: "+fq2);          
        }
    }
}

但是,在获得频率时,您应该考虑处理您的潜力。InputMismatchException


推荐阅读