将字符串放在2D布尔数组Java中

时间:2012-12-05 01:54:41

标签: java arrays string boolean

我只是想知道是否有人可以向我展示一些关于如何将此字符串放在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为真,所有其他位置应为假

1 个答案:

答案 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}},或者它是这对数字之间的唯一字符现在还不知道。如果我们假设输入格式正确,则可以。但是,如果没有给出该假设,我们就无法进行任何输入验证。