java - 字符串到数组字符串的精确副本! DPLL算法

标签 java algorithm

我认为非常接近解决方案,但我找不到它。我正在以两种方式实现一种 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.ar​​g()。此方法不会获取与手动输入相同的输入。我希望清楚。非常感谢!

最佳答案

不要使用 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]);
}

关于java - 字符串到数组字符串的精确副本! DPLL算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218659/

相关文章:

java - 如何在 Java 中以编程方式记录传递给方法的参数

ruby - 如何处理 'lock' 数据库行

algorithm - 稳定匹配

algorithm - 给定数字的 HCF

php - 找到所有可能的交换卡的方法

java - 找到下一个最小的键(需要性能建议)

java - requestLocationUpdates 中的 minDistance 参数

java - 在 HQL 中使用 NOT IN 子句删除

java - 在 Java 8 中尝试通过 JDBC-ODBC 连接到 .accdb 文件时出现 ClassNotFoundException

java swing 应用程序 - 如何设置面板中组件的高度(和宽度)