java - 如何解决二维数组的问题
问题描述
嘿,我想为朋友编写一个程序来管理他的交易卡,但在编写二维数组时遇到了问题。[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);
}
}
}
解决方案
您需要小心,.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
推荐阅读
- android - 如何将两个带有共享变量的 kotlin 数据对象合并为一个对象?
- r - 如何通过考虑多词在文本中的位置来挖掘多词?
- delphi - FireDac 查询返回空结果
- javascript - JS通过烧瓶{{变量}}格式访问python变量不起作用
- angular - 填充数据源时角度材料表不显示值
- vlang - 用点分隔的插值字符串解析错误?
- mysql - Docker:当 MySQL 准备好时,“wait-for-it”脚本不会启动应用程序
- php - 如何将json文件中的数据转换为php中的星期几?
- python - OpencCV HoughLines 找不到垂直线
- sql - 找出每个项目每个员工的总劳动力成本