我只是想知道是否有人可以向我展示一些关于如何将此字符串放在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为真,所有其他位置应为假
答案 0 :(得分:1)
我不知道你把它们放在2D 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
之间是否显示second
,或-
出现了多少{{1}},或者它是这对数字之间的唯一字符现在还不知道。如果我们假设输入格式正确,则可以。但是,如果没有给出该假设,我们就无法进行任何输入验证。