我认为如此接近解决方案但我无法找到它。我以两种方式实现了一种DPLL算法。第一个自动从文件输入,第二个(相同)从控制台手动输入。第二个很好用,但第一个有问题 我的输入都是这样的形式:[ - 8,6,1] [4,10,-1] [7,-5,3] [10,-8,3] [10,-8,-6] [ 5,-3,6-]。该类需要从文件管理采集。
package ausiliare;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.*;
//import org.apache.commons.lang3.StringUtils;
public class Lettura {
public static int getInt() throws IOException {
String content = null;
File folder = new File("C:\\Solution.txt");
content = FileUtils.readFileToString(folder) + "\n";
int outside = Integer.parseInt(content.substring(0,
content.indexOf("[")).trim());
return outside;
}
public static String getString() throws IOException {
String content = null;
File folder = new File("C:\\Solution.txt");
content = FileUtils.readFileToString(folder) + "\n";
String remainingString = content.substring(content.indexOf("["),
content.lastIndexOf("]") + 1);
// System.out.println(remainingString);
return remainingString;
}
public static String[] arg() throws IOException {
String[] strArray = getString().split("");//here i don't really do
// System.out.println(Arrays.toString(strArray));
return strArray;
}
}
第二种算法(我手动复制解决方案)中不需要此部分。 问题出在这里:
public static void main(String[] args) {
try {
List<Clausola> formula = new LinkedList<Clausola>();
int n = Lettura.getInt();
String[] arg = Lettura.arg();
parseClauses(formula, arg, n);
System.out.println("Il numero di Letterali utilizzati:"+n);
System.out.println("La tua formula k-CNF:"+Lettura.getString());
boolean[] solution = solveDPLL(n, formula);
----------------------------------------------- ---------------(其他事)
public static void parseClauses(List<Clausola> F, String[] arg, int N) {
for (int i = 1; i < arg.length; i++) {
我的问题是关于String [] arg = Lettura.arg()。此方法不会获取手动提供的相同输入。我希望能够清楚。非常感谢你!
答案 0 :(得分:1)
不要使用String []数组。而是使用char []数组。您可以使用以下方法将字符串转换为char []。
String s = "foo";
char[] charArray = s.toCharyArray();
charArray = {f, o, o}
如果您只是必须使用String []数组,那么我会这样做:
String s = "foo";
char[] charArray = s.toCharArray();
String[] sA = new String[charrArray.length];
for (int i = 0; i < sA.length; i++) {
sA[i] = String.valueOf(charArray[i]);
}