0

I get this error

:/tmp$ javac DrawPowerSet.java 
DrawPowerSet.java:38: error: incompatible types
        String value = set.get(i);
                              ^
  required: String
  found:    Object
1 error

when I try to compile this small code:

I'm on ubuntu release 15.10

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/* @author Philippe Fournier-Viger, 2014 */
public class DrawPowerSet {
    public static void main(String[] arg) throws IOException,
            InterruptedException {
        String[] set = new String[]{"a", "b", "c", "d", "e"};
        String output = "input.dot";
        BufferedWriter writer = new BufferedWriter(new FileWriter(output));
        writer.write("digraph mygraph{");
        for (long i = 0, max = 1 << set.length; i < max; i++) {
            List newSet = new ArrayList();
            for (int j = 0; j < set.length; j++) {
                int isSet = (int) i & (1 << j);
                if (isSet > 0) {
                    newSet.add(set[j]);
                }
            }
            if (newSet.size() != set.length) {
                printLinksToImmediateSupersets(newSet, set, writer);
            }
        }
        writer.write("}");
        writer.close();
    }
    private static void printLinksToImmediateSupersets(List subset,
            String[] set, BufferedWriter writer) throws IOException {
        for (int i = 0; i < set.length; i++) {
            String value = set[i];
            if (subset.contains(value) == false) {
                List newSet = new ArrayList();
                newSet.addAll(subset);
                newSet.add(value);
                writer.write(asString(subset) + " -> " + asString(newSet)
                        + " \n");
            }
        }
    }
    private static String asString(List set) {
        Collections.sort(set);
        if (set.size() == 0) {
            return "\"{}\"";
        }
        StringBuffer buffer = new StringBuffer();
        buffer.append("\"{");
        for (int i = 0; i < set.size(); i++) {
            String value = set.get(i);
            buffer.append(value);
            if (i != set.size() - 1) {
                buffer.append(",");
            }
        }
        buffer.append("}\"");
        return buffer.toString();
    }
}

java -version

  • java version "1.7.0_91"
  • OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.15.10.1)
  • OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
Mirco Widmer
  • 2,139
  • 1
  • 20
  • 44
user3313834
  • 7,327
  • 12
  • 56
  • 99
  • You have to specify your method parameter List set in your method asString as a list of Strings: `private static String asString(List set)`. You will still have some compiler warnings, take a look at the answers provided with the link on the top (marked as duplicate). – Mirco Widmer Dec 14 '15 at 15:22
  • silly me this: "private static String asString(List set) {" should be replace by "private static String asString(List set) {" – user3313834 Dec 14 '15 at 15:29

0 Answers0