小编Sve*_*ven的帖子

Prolog约束处理:包装正方形

我正在尝试解决prolog中的约束处理问题.

我需要在10x10的网格中打包4个5x5,4x4,3x3和2x2的正方形.它们可能不重叠.

我的变量看起来像这样:

Name: SqX(i), i=1..10, domain: 1..10
Run Code Online (Sandbox Code Playgroud)

其中X是5,4,3或2.索引i表示行,域表示网格中的列.

我的第一个约束试图定义正方形的宽度和高度.我这样制定它:

Constraint: SqX(i) > SqX(j)-X /\ i>j-X, range: i>0 /\ j>0
Run Code Online (Sandbox Code Playgroud)

这样可能的点被约束在彼此的X行和列之内.然而,Prolog会停止这些约束并给出以下结果:

Adding constraint "(Sq5_I > Sq5_J-5) /\ (I>J-5)" for values:
        I=1, J=1, 
        I=1, J=2, 
        I=1, J=3, 
        I=1, J=4, 
        I=1, J=5, 
        I=1, J=6, 
=======================[ End Solutions ]=======================
Run Code Online (Sandbox Code Playgroud)

所以它停在那里,甚至没有检查其他方块.我的约束很可能太紧张,但我不明白为什么或如何.有什么建议?

constraints prolog sicstus-prolog clpfd clpb

36
推荐指数
3
解决办法
3356
查看次数

在运行时Java重新加载使用的类

我正在研究一个监视目录的程序,并在看到目录中的更改时运行目录中的所有测试.

这需要程序动态加载类,而不是获取缓存副本.

我可以动态加载测试类.在运行时检测并使用对测试的更改.但是,测试所测试的类不是这种情况.

我的代码用于动态加载类并返回测试类列表:

List<Class<?>> classes = new ArrayList<Class<?>>();
    for (File file : classFiles) {
        String fullName = file.getPath();
        String name = fullName.substring(fullName.indexOf("bin")+4)
                .replace('/', '.')
                .replace('\\', '.'); 
        name = name.substring(0, name.length() - 6);

            tempClass = new DynamicClassLoader(Thread.currentThread().getContextClassLoader()).findClass(name)          } catch (ClassNotFoundException e1) {
            // TODO Decide how to handle exception
            e1.printStackTrace();
        }

        boolean cHasTestMethods = false;
        for(Method method: tempClass.getMethods()){
            if(method.isAnnotationPresent(Test.class)){
                cHasTestMethods = true;
                break;
            }
        }
        if (!Modifier.isAbstract(cachedClass.getModifiers()) && cHasTestMethods) {
            classes.add(tempClass);
        }
    }
    return classes;
Run Code Online (Sandbox Code Playgroud)

使用DynamicClassLoader作为此处描述的重载器如何强制Java在实例化时重新加载类?

知道怎么解决吗?我以为所有类都会动态加载.但请注意,我不会覆盖DynamicClassLoader中的loadclass,因为如果我执行测试类,则给出init

编辑:这不起作用,类被加载但其中的测试未被检测到...

List<Request> …
Run Code Online (Sandbox Code Playgroud)

java reloading

15
推荐指数
1
解决办法
2万
查看次数

Java Swing:使用相应的键盘按钮时显示按下的按钮

我正在使用Swing创建一个Java程序,其中包含一个包含箭头键的GUI.箭头键对应键盘上的箭头键.

当我按下键盘上的向上箭头键时,我希望GUI上的向上箭头键显示为按下.在我释放箭头键之前,它应该显示它仍然被按下,并且在释放时它也应该释放.

到目前为止我的代码片段(仅用于Up按钮),我认为在按下类别的节目中是完全错误的:

...
if (e.getKeyCode() == KeyEvent.VK_UP) {
                    actionArrowUp();
                    JButton buttonUp = (JButton) mainTab.getComponent(4);
                    buttonUp.setSelected(true);
                }
...
@Override
public void keyReleased(KeyEvent e) { 
            if (e.getKeyCode() == KeyEvent.VK_UP)
                actionArrowUpRelease();
                buttonUp.setSelected(true);
Run Code Online (Sandbox Code Playgroud)

java swing button key-bindings actionlistener

5
推荐指数
1
解决办法
1288
查看次数

尝试避免返回NULL时键入安全警告

在Eclipe,Java中,我正在研究一种能够完成大量工作的方法,并且最终需要返回带有参数Element的生成列表.此列表可能为null,在这种情况下,我希望该方法返回一个空列表.这是为了防止需要if(list != null)在任何地方进行检查,因为语句使用空列表.

我通过以下方式执行此操作:

return tempList == null ? Collections.EMPTY_LIST : tempList;
Run Code Online (Sandbox Code Playgroud)

但是,这会发出以下警告:

类型安全:类型列表的表达式需要未经检查的转换才能确认List<Element>.

Eclipse建议的所有解决方案都不起作用.我猜这个问题是Collections.EMPTY_LIST返回一个通用列表,但不知道如何解决这个问题.

java generics type-safety

4
推荐指数
2
解决办法
181
查看次数

输入"|"时Haskell解析错误

Haskell一直在给这个,我不明白为什么.试图用if/else重写然后它抱怨那个......

错误信息; 2006grafen.hs:40:12:输入`|'解析错误

码:

data Edge a = Boog a a deriving Show
data Graph a = Graaf [a] [Edge a] deriving Show

vindBuren :: Eq a => a -> Graph a -> [a]
vindBuren _ (Graaf list []) = []
vindBuren knoop (Graaf list ((Boog x y):rest))
       | knoop == x = y : (vindBuren knoop (Graaf list rest))
       | knoop == y = x : (vindBuren knoop (Graaf list rest))
       | otherwise = vindBuren knoop (Graaf list rest) …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
1
解决办法
2622
查看次数