gpt4 book ai didi

Java - 子字符串问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:44 24 4
gpt4 key购买 nike

我将在这里展示我的所有代码,以便你们了解我正在做的事情的要点。

import java.io.*;

import java.util.*;

public class Plagiarism {

public static void main(String[] args) {

Plagiarism myPlag = new Plagiarism();

if (args.length == 0) {
System.out.println("Error: No files input");
}
else if (args.length > 0) {
try {
List<String> foo = new ArrayList<String>();
for (int i = 0; i < 2; i++) {
BufferedReader reader = new BufferedReader (new FileReader (args[i]));
foo = simplify(reader);
for (int j = 0; j < foo.size(); j++) {
System.out.print(foo.get(j));
}
}

int blockSize = Integer.valueOf(args[2]);
System.out.println(args[2]);
// String line = foo.toString();
List<String> list = new ArrayList<String>();
for (int k = 0; k < foo.size() - blockSize; k++) {
list.add(foo.toString().substring(k, k+blockSize));
}
System.out.println(list);
}
catch (Exception e) {
e.printStackTrace();
}
}
}

public static List<String> simplify(BufferedReader input) throws IOException {
String line = null;
List<String> myList = new ArrayList<String>();

while ((line = input.readLine()) != null) {
myList.add(line.replaceAll("[^a-zA-Z]","").toLowerCase());
}
return myList;
}

}

这是使用子字符串的代码。

int blockSize = Integer.valueOf(args[2]);

//"foo" is an ArrayList<String> which I have to convert toString() to use substring().
String line = foo.toString();
List<String> list = new ArrayList<String>();
for (int k = 0; k < line.length() - blockSize; k++) {
list.add(line.substring(k, k+blockSize));
}

System.out.println(list);

当我在 cmd 中将 blockSize 指定为 4 时,结果如下:

[[, a, , ab, abc ]

文本文件(使用我的其他代码标准化)是这样的:

abcdzaabcdd

所以结果应该是这样的:

[abcd, bcdz, cdza, ] etc.

有什么帮助吗?

提前致谢。

最佳答案

这里的代码展示了如何改进你的代码。主要变化是从 simplify 返回简化的字符串方法而不是 List<String>简化行,将其转换为字符串后,以

形式返回 String
[value0, value1, value2, ...]

现在代码以 value0value1value2 形式返回字符串.

另一个变化是通过删除不必要的 else if 来降低缩进杆。语句和制动控制流程与System.exit(0); (您也可以在此处使用return;)。

class Plagiarism {

public static void main(String[] args) throws Exception {
//you are not using 'myPlag' anywhere, you can safely remove it
// Plagiarism myPlag = new Plagiarism();

if (args.length == 0) {
System.out.println("Error: No files input");
System.exit(0);
}

String foo = null;
for (int i = 0; i < 2; i++) {
BufferedReader reader = new BufferedReader(new FileReader(args[i]));
foo = simplify(reader);
System.out.println(foo);
}

int blockSize = Integer.valueOf(args[2]);
System.out.println(args[2]);

List<String> list = new ArrayList<String>();
for (int k = 0; k < foo.length() - blockSize; k++) {
list.add(foo.toString().substring(k, k + blockSize));
}
System.out.println(list);

}

public static String simplify(BufferedReader input)
throws IOException {

StringBuilder sb = new StringBuilder();
String line = null;
while ((line = input.readLine()) != null) {
sb.append(line.replaceAll("[^a-zA-Z]", "").toLowerCase());
}
return sb.toString();
}
}

关于Java - 子字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com