我只是想知道是否有人可以向我展示一些关于如何将此字符串放入 2D 布尔数组并打印出来的代码
示例:“0-1 0-2 1-2 1-3 2-3”,但字符串可能更复杂,例如“0-1 1-2 2-3 3-0 0-4 0-11 1- 5 1-6 2-7 2-8 3-9 3-10 4-5 6-7 8-9 10-11 4-7 4-8 5-9 5-10 6-9 6-10 7-11 8 -11"
一个例子是 0-1 为真,0-2 为真,1-2 为真,1-3 为真,2-3 为真,所有其他位置都应为假
我不知道你把它们放在二维boolean
数组中是什么意思。如果您在解析文本时遇到问题,那么这里有一些您可以使用的代码片段。
对于第一个解决方案,我假设数字总是成对出现并由单个 分隔-
,并且空格用于分隔数字对。
如果您从标准输入读取,请使用此选项:
Scanner scanner = new Scanner(System.in);
如果您有一个String
包含所有数字并且想要处理它(让变量的名称为inputString
),请使用它:
Scanner scanner = new Scanner(inputString);
然后您可以从输入中读取数字:
while (scanner.hasNext()) {
String pair = scanner.next();
// Split by the hyphen
String tokens[] = pair.split("-");
// Normally, one should check the array before accessing it
// I currently assume the input is valid
int first = Integer.parseInt(tokens[0]);
int second = Integer.parseInt(tokens[1]);
// Do whatever you want with the 2 numbers extracted
}
或者,您也可以使用useDelimiter作为分隔符添加-
和使用nextInt
读取数字,而无需-
单独处理:
scanner.useDelimiter("[\\p{javaWhitespace}-]+");
代码将简单地变为:
scanner.useDelimiter("[\\p{javaWhitespace}-]+");
while (scanner.hasNext()) {
int first = scanner.nextInt();
int second = scanner.nextInt();
// Do whatever you want with the 2 numbers extracted
}
代码更简洁,但是否-
出现在first
and之间second
,或者出现了多少-
,或者是不是这对数字之间的唯一字符,现在还不得而知。如果我们假设输入格式是正确的就可以了。但是,如果没有给出该假设,我们将无法进行任何输入验证。