我正在尝试解决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)
所以它停在那里,甚至没有检查其他方块.我的约束很可能太紧张,但我不明白为什么或如何.有什么建议?
我正在研究一个监视目录的程序,并在看到目录中的更改时运行目录中的所有测试.
这需要程序动态加载类,而不是获取缓存副本.
我可以动态加载测试类.在运行时检测并使用对测试的更改.但是,测试所测试的类不是这种情况.
我的代码用于动态加载类并返回测试类列表:
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) 我正在使用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) 在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返回一个通用列表,但不知道如何解决这个问题.
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) java ×3
button ×1
clpb ×1
clpfd ×1
constraints ×1
generics ×1
haskell ×1
key-bindings ×1
prolog ×1
reloading ×1
swing ×1
type-safety ×1