我经常访问这个网站,但我遇到了一些我无法回答的问题。这是类似于其他几个职位,在这里,但我还没有找到一个答案,我正在寻找。
需要注意的是,这是学校课程的一部分,目前这是一个更大的java项目的独立java类。目前,我无法编辑. txt文件,并且仅限于使用以下资源:
标准JDK资源
java.util.Scanner;
java.io.FileInputStream;
java.io.IOException;
使用以下列表:
john.doe 108de81c31bf9c622f76876b74e9285f "dead man" user
jane.doe 3e34baa4ee2ff767af8c120a496742b5 "dead woman" admin
barney.rubble a584efafa8f9ea7fe5cf18442f32b07b "secret password" mod
fred.flinstone 17b1b7d8a706696ed220bc414f729ad3 "R0ck3y business" user
luke.skywalker 3adea92111e6307f8f2aae4721e77900 "usetheforce1234" mod
leah.skywalker 0d107d09f5bbe40cade3de5c71e9e9b7 "saveme" admin
每个条目由制表符分隔。
我当前的java代码如下:
public static void main(String[] args) throws IOException {
FileInputStream credFile = null; // File input
Scanner inFS = null; // Scanner object
final int NUM_ROWS_CRED = 6;
final int NUM_COLS_CRED = 4;
String[][] credArray = new String[NUM_ROWS_CRED][NUM_COLS_CRED];
int i = 0; // Index variable
int j = 0; // Index variable
// Import file data from file.txt
credFile = new FileInputStream("file.txt");
inFS = new Scanner(credFile);
// Create array of file.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}
// Output array to verify array stored correctly.
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
System.out.println(credArray[i][j] + " ");
}
System.out.println("");
}
credFile.close(); //Closes file.
}
我当前的输出如下:john。doe 108DE81C31BF9C622F7687B74E9285F“死人”
user
jane.doe
3e34baa4ee2ff767af8c120a496742b5
"dead
woman"
admin
barney.rubble
a584efafa8f9ea7fe5cf18442f32b07b
"secret
password"
mod
fred.flinstone
17b1b7d8a706696ed220bc414f729ad3
"R0ck3y
business"
user
luke.skywalker
3adea92111e6307f8f2aae4721e77900
"usertheforce1234"
mod
预期输出:john.doe108de81c31bf9c622f76876b74e9285f"死人"用户
jane.doe
3e34baa4ee2ff767af8c120a496742b5
"dead woman"
admin
等等...
解决方案、指导、正确方向的指针都是受欢迎的。另外,请记住,我被严格限制不编辑。txt文件,并且只使用了JDK和列出的3个资源。非常感谢。
试试这个。
final int NUM_ROWS_CRED = 6;
final int NUM_COLS_CRED = 4;
String[][] credArray = new String[NUM_ROWS_CRED][NUM_COLS_CRED];
Pattern pat = Pattern.compile("\"[^\"]+\"|\\S+");
try (BufferedReader r = Files.newBufferedReader(Paths.get("file.txt"))) {
for (int i = 0; i < NUM_ROWS_CRED; ++i) {
Matcher m = pat.matcher(r.readLine());
for (int j = 0; m.find() && j < NUM_COLS_CRED; ++j)
credArray[i][j] = m.group();
}
}
for (String[] row : credArray)
System.out.println(Arrays.toString(row));
结果:
[john.doe, 108de81c31bf9c622f76876b74e9285f, "dead man", user]
[jane.doe, 3e34baa4ee2ff767af8c120a496742b5, "dead woman", admin]
[barney.rubble, a584efafa8f9ea7fe5cf18442f32b07b, "secret password", mod]
[fred.flinstone, 17b1b7d8a706696ed220bc414f729ad3, "R0ck3y business", user]
[luke.skywalker, 3adea92111e6307f8f2aae4721e77900, "usetheforce1234", mod]
[leah.skywalker, 0d107d09f5bbe40cade3de5c71e9e9b7, "saveme", admin]
你熟悉正则表达式吗?它们是解决你问题的关键。
与@cricket_007一样,默认的扫描器
分隔符是空白。这就是为什么扫描器会将引用的令牌分开,我相信这是您希望扫描器不要做的事情。因此,您必须通知扫描器如何分割输入令牌。
在一行中,标记由制表符分隔,行由换行符分隔。因此,您可以这样指示扫描仪:
inFS.useDelimiter("[\\t\\R]");
这样,扫描器将给出引用的令牌作为一个整体。此正则表达式意味着拆分由制表符或任何换行符分隔的标记。模式Javadoc
如果输入中没有换行符,则正则表达式更简单:
inFS.useDelimiter("\\t");
如果不允许使用正则表达式,则必须找到另一种方法来处理带引号的标记。
我有一个txt文件,我正试图用扫描仪类读取它。 我正在使用一个double for循环来读取文件,并在其上读取到一个2D数组。 该文件如下所示: 3 3。R#。.#。.# 第一行分别是2D数组的长度和宽度。 3 3 1 0 1 1 1 0 0 1 我在这里使用的方法如下所示: 我希望这与使用char而不是int时的工作方式相同。
正如标题所说,我想知道在Java中是否有使用数组格式化字符串的简便方法。 让我举一个kotlin的例子。 以上代码运行良好。那么Java呢? 对不起,我没有清楚地描述我的问题。当我遇到我的真实案例时,我发现我的代码现在无法工作。 事实上,模板是从文件中读取的。 和模板。txt文件包含: 如您所见,我想读取文件,然后格式化结果。 另外,对于这个问题我很抱歉。因为它似乎被更改为如何格式化从文件中读取的
问题内容: 如何从字符串读取numpy数组?采取类似的字符串: 并将其转换为数组: 在哪里成为对象: 更新 : 我正在寻找一个非常简单的界面。一种将2D数组(浮点数)转换为字符串,然后将其读回以重建数组的方法: 应该回来 应该返回对象 理想的情况是,如果有一个用来控制将浮点精度转换为字符串的精度参数,那么您就不会得到像这样的条目。 在numpy的文档中我找不到任何可以同时完成这两种操作的文档。可让
所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4
问题内容: 我正在寻找正则表达式以在Java中执行以下操作: 一些测试用例: 我遇到的一些摘要: 谢谢! 问题答案: String stringToSplit = This is the string to split; 在这种情况下,结果将为“ This”,“ is”,“ the”,“ string ”,“ split”。 此时您可以 在哪里等于“ This”,依此类推… 希望这可以帮助。
问题内容: 嗨,我想读取N行的txt文件,并将结果放入字符串数组中。 问题答案: 使用和。