如果这个问题得到解答,我必须事先道歉,到目前为止我还没能在论坛上找到这个问题的答案。
我正在研究项目欧拉问题,确切地说问题54,我需要读取1000行数据,每行包含两个随机生成的扑克牌,前半部分是玩家1的手,第二个是玩家2的。
以下是文档布局的示例:
8CTSKC9H4S 7D2S5D3SAC
5CAD5DAC9C 7C5H8DTDKS
3H7H6SKCJS QHTDJC2D8S
TH8H5CQSTC 9H4DJCKSJS
到目前为止,我所做的是手动制作两个文档,从每行复制第二个“Hand”并将其添加到新文档中。然而,我做了两次并得出了两个不同的结果,所以我想我在所有复制的某个地方犯了一个错误。 以下是我使用的上述功能的示例:
ArrayList<String> player1 = new ArrayList<String>();
ArrayList<String> player2 = new ArrayList<String>();
String file1 = "FilePath1";
String file2 = "FilePath2";
Scanner input1 = new Scanner(new File(file1));
while(input1.hasNext()) {
player1.add(input1.nextLine());
}
Scanner input2 = new Scanner(new File(file2));
while(input2.hasNext()) {
player2.add(input2.nextLine());
}
input1.close();
input2.close();
我想知道的是我怎样只能将第一只手读入ArrayList,然后只将第二只手读入另一只手。无需创建两个单独的文档,并且可能会危及数据泄露。如果可行的话,我不知道如何在这里使用Split功能。我对编程很新,我正在努力教自己,所以如果这是一个过于简单的问题我会道歉。
非常感谢您提前
答案 0 :(得分:1)
你可以分割空间(所有空格)
例如:
String currLine = input1.nextLine();
//This only needed if you are not sure if the input will have leading/trailing space
currLine = currLine.trim();
String[] split = currLine.split("\\s+");
//Ensuring the line read was properly split
if(split.length == 2) {
//split[0] will have the first hand
player1.add(split[0]);
//split[1] will have the second hand
player2.add(split[1]);
}