小编sag*_*e88的帖子

布尔数组可以在For循环中初始化吗?

刚刚发现这个问题恰好通过初始化一个在java中初始化布尔数组的布尔数组来解决我的问题.然而,虽然它给了我可以工作的代码,但提问者并没有尝试我正在运行的代码,但是我实际上想知道为什么它不起作用.这是我尝试的代码:

Boolean[] array = new Boolean[5];
for(Boolean value : array) {
    value = false;
}
Run Code Online (Sandbox Code Playgroud)

这是其他问题的功能代码:

Boolean[] array = new Boolean[5];
Arrays.fill(array, Boolean.FALSE);
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么for循环方法不起作用?

java arrays initialization

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

Java Minimax Alpha-Beta修剪递归返回

我正在尝试使用alpha-beta修剪为Java中的跳棋游戏实现minimax.我的minimax算法运行得很好.我的代码运行时使用了alpha-beta代码.不幸的是,当我使用标准的极小极大算法玩1000场比赛时,alpha-beta算法总是落后50场左右.

由于alpha-beta修剪不应该降低移动的质量,只需要实现它们所需的时间,因此必定是错误的.但是,我已经拿出笔和纸并绘制了假设的叶节点值,并使用我的算法来预测它是否会计算出正确的最佳移动,并且似乎没有任何逻辑错误.我使用了这个视频中的树:Alpha-Beta Pruning来跟踪我的算法.它在逻辑上应该做出所有相同的选择,因此是一个有效的实现.

我还将print语句放入代码中(它们已被删除以减少混乱),并且正确返回值,并且修剪确实发生.尽管我付出了最大的努力,但我一直无法找到逻辑错误所在.这是我实现这一点的第三次尝试,所有这些尝试都有同样的问题.

我不能在这里发布完整的代码,它太长了,所以我已经包含了与错误相关的方法.我不确定,但我怀疑这个问题可能出现在非递归的move()方法中,虽然我无法在其中找到逻辑错误,所以我只是在其中进行更多的讨论,可能是在制作东西没有押韵或理由,更糟糕而不是更好.

有没有从for循环中的递归调用中恢复多个整数值的技巧?它适用于我的minimax和negamax实现,但alpha-beta修剪似乎产生了一些奇怪的结果.

@Override
public GameState move(GameState state) 
{
    int alpha = -INFINITY;
    int beta = INFINITY;
    int bestScore = -Integer.MAX_VALUE;
    GameTreeNode gameTreeRoot = new GameTreeNode(state);
    GameState bestMove = null;
    for(GameTreeNode child: gameTreeRoot.getChildren())
    {
        if(bestMove == null)
        {
            bestMove = child.getState();
        }
        alpha = Math.max(alpha, miniMax(child, plyDepth - 1, alpha, beta));
        if(alpha > bestScore)
        {
            bestMove = child.getState();
            bestScore = alpha;
        }
    }
    return bestMove;
}

private int miniMax(GameTreeNode currentNode, int depth, int alpha, …
Run Code Online (Sandbox Code Playgroud)

java recursion artificial-intelligence minimax alpha-beta-pruning

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

jQuery在现有段落标记内附加文本

我试图使用jQuery在段落的末尾添加其他文本.我的想法是产生这样的结构:

从我的答案来看,我会澄清.我需要先创建这个结构.这是我觉得困难的部分,而不是第二个最终结果.那么我该如何动态创建:

<p>old-dynamic-text<span id="add_here"></span></p>
Run Code Online (Sandbox Code Playgroud)

然后在添加新文本后,它将如下所示:

<p>old-dynamic-text<span id="add_here">new-dynamic-text</span></p>
Run Code Online (Sandbox Code Playgroud)

我一直在使用.wrapAll()方法,但我无法达到预期的效果.这是执行此操作的最佳方式(如果是这样的话),还是有另一种方法将新文本附加到现有段落的末尾(需要将其包装在某种类型的标记中,因为我需要以不同的方式设置样式) ?

jquery append wrapall

18
推荐指数
2
解决办法
8万
查看次数

Java中的基本数组[]树数据结构

这是一个家庭作业问题,所以我不是在寻找完整的代码答案.

我被给了一个班级狗

package lab12;

import java.io.Serializable;

public class Dog implements Serializable{

    public Dog[] children;
    public String name;

    public Dog(String name)
    {
        this.name = name;
    }

    @Override
    public String toString()
    {
        return name;
    }

}
Run Code Online (Sandbox Code Playgroud)

以及包含根狗Spot的数据文件,其子项存储在数组中.我需要编写可以打开数据文件的代码,然后单步执行树数据结构以查看输入名称是否是根(Spot)的后代.

我很自信我可以打开数据文件.我正在努力创建具有数组作为链接的节点的语法.我们的教科书只涵盖二进制树,它们可以链接到左侧或右侧,但不能链接到可变数量的链接.我找到了一个使用List方法的通用示例.

public class Tree<T> 
{
    private Node<T> root;

    public static class Node<T> 
    {
        private T data;
        private Node<T> parent;
        private List<Node<T>> children;
    }

    public Tree(T rootData) 
    {
        root = new Node<T>();
        root.data = rootData;
        root.children = new ArrayList<Node<T>>();
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我必须使用数据文件,因此除了将子项存储在Dog []中之外,我无法将Node的结构更改为任何其他内容.我找不到使用基本数组来存储子节点的节点类的示例,我无法弄清楚这样做的语法.在我尝试学习它之前,我认为在没有泛型的情况下看它会有所帮助.

到目前为止,这是我的代码:

package lab12; …
Run Code Online (Sandbox Code Playgroud)

java arrays

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

使用paintComponent进行Java幻灯片图像延迟

我正在整理一个幻灯片程序,用于衡量用户在每张幻灯片上花费的时间.幻灯片演示了几个不同的魔术技巧.每个技巧都会显示两次.在重复之间显示临时图像.在每个技巧之间显示过渡图像.

在第一次重复技巧时,在显示下一个图像之前,点击后,JPanel颜色在屏幕上闪烁.在第二次重复相同的技巧期间不会发生这种情况.图像可能需要很长时间才能加载.

是否有一种简单的方法来预加载图像,以便第一次没有延迟?

NOTE: Original code deleted.
Run Code Online (Sandbox Code Playgroud)

编辑2013年1月10日:此代码现在适用于较慢的计算机.trashgod的第二个附录帮助最多.mouseClick控件结构定期要求SwingWorker类加载40个或更少的当前技巧,同时还将使用过的图像设置为null.我已经将我的代码简化为两个Image []并添加了一个main方法,因此它是独立的.仍然需要运行图像.现在这是非常简单的代码,如果你想用大量图片制作幻灯片,我认为这将是一个很好的起点.

注意:我想我在使用多个Image []时想出了如何正确实现SwingWorker.trashgod和kleopatra这个实现符合你的建议吗?我最终没有使用发布和进程,因为我无法弄清楚如何使用索引数组正常工作,但因为StringWorker没有加载数组中的所有图像(只有40)和代码调用StringWorker每20个图像,应该有一个相当不错的缓冲区.

编辑1/10/2013通过在Mouse类上扩展MouseAdapter来改变MouseListener.还修复了我的paintComponent方法,以包含对super.paintComponent(g)的调用.向我的SwingWorker类ImageWorker添加了发布/处理方法.添加了一个包装类ArrayWrapper,允许传递imageArray [i]及其相应的索引int i,并使用publish进行处理.

package slideshow3;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.List;

public class SlideShow3 extends JFrame
{
    //screenImage will be replaced with each new slide
    private Image screenImage;
    private int width;
    private int height;

    //Create panel for displaying images using paintComponent()
    private SlideShow3.PaintPanel mainImagePanel;

    //Used for keybinding
    private Action escapeAction;

    //Image array variables for each trick
    private …
Run Code Online (Sandbox Code Playgroud)

java image slideshow swingworker paintcomponent

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

用户输入带有变量声明的 JavaScript eval

作为家庭作业的一部分,我试图在浏览器环境中实现一个类似于 Firebug 中可用的 JavaScript 控制台。从我收集到的情况来看,eval()这似乎是最简单的方法。然而,即使是非常基本的用户输入,我的代码也会遇到一些问题。例如:

\n\n
var number = 5;\n
Run Code Online (Sandbox Code Playgroud)\n\n

导致语法错误而不仅仅是评估undefined像 Firebug 中那样进行评估。因此,我似乎根本无法在 eval 字符串内声明变量。如果我做一些更简单的事情,例如:

\n\n
3 + 4 * Math.PI\n
Run Code Online (Sandbox Code Playgroud)\n\n

它工作正常。我试图找到一个有人使用的例子eval()在包含变量声明的字符串上使用的示例,但我似乎找不到任何人这样做。

\n\n

在将用户输入编译成新字符串之前,我是否需要使用正则表达式完全解析用户输入eval()

\n\n

能把eval()分号理解为换行符吗?我也找不到使用这些的人。

\n\n
function runMiniFirebug() {\n    var userInput = document.getElementById("user-input").value;\n    try {\n        var userOutput = eval(\'(\' + userInput + \')\');\n        document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + userInput + \'<p>\';\n        document.getElementById("js-output").innerHTML += \'<p class="ouput">\' + userOutput + \'<p>\';\n    }\n    catch(error) {\n        document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + …
Run Code Online (Sandbox Code Playgroud)

javascript firebug command-line eval

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

BUG:Java Swing键绑定在OSX中使用awt setFullScreenWindow在JDK 7中丢失函数

编辑2013年1月16日:原始问题已被删除.这似乎是mac OSX上JDK 7的一个错误.我已经向Sun(Oracle)提交了一份错误报告.

下面的文件使用awt类GraphicsEnvironment和方法setFullScreenWindow将图像显示为全屏.没有包含图像,因此运行代码时屏幕将显示为灰色.但是,密钥绑定仍然有效.

有两个键绑定.按"ENTER"键应打印"按下Enter键".到stdout.按"ESCAPE"应该将"ESC Key终止的程序"打印到stdout并退出程序.

使用Windows 7 64和JDK Java SE 6和7,这些键绑定按预期工作.

使用Mac OSX 10.7 Lion和JDK Java SE 6,这些键绑定按预期工作.

使用Mac OSX 10.7 Lion和JDK Java SE 7,这些键绑定将停止工作.

回滚到JDK Java SE 6会使它们重新开始工作.

我不知道它是否会影响其他操作系统.

我已经尝试了所有版本的JComponent.WHEN_IN_FOCUS等......并且这些选项都没有解决问题.

下面是SSCCE,只有在使用Mac OSX 10.7和JDK Java SE 7时才会重现错误.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FullScreen extends JFrame
{
    /*
     * screenImage is never set in this code. It can be set to any image
     * the error will still be present. Images have been …
Run Code Online (Sandbox Code Playgroud)

java macos awt key-bindings

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

带返回类型数组的递归树遍历方法

有没有办法以递归方式遍历树并返回一个作用于该递归方法的数组?

所以我最近回答了别人关于这个话题的问题.这个问题可以在这里找到:SO问题.我的解决方案使用了递归范围之外的数组,因此该方法不能(或至少可能不应该)返回数组.但是,有没有办法编写一个遍历树的递归方法,以便返回一个数组?即使编写一个调用递归方法的初始方法也没关系,但我想不出一个好方法.

这是我之前建议的代码:

private List nodeValues = new ArrayList();

public void traversePreRecursive(BinarySearchTreeNode node) 
{
    if (node != null)
    {
        nodeValues.add(node.getValue());
        traversePreRecursive(node.getLeft());
        traversePreRecursive(node.getRight());
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,ArrayList它超出了递归范围 - 因此返回它并没有多大意义.有一个更好的方法吗?

java arrays recursion binary-tree traversal

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

原型javascript不显眼的点击事件添加到按钮

我想使用带有原型的javascript向按钮添加一个不显眼的事件处理程序.我在下面写了一个非常简单的HTML示例,其中有两个按钮.第一个按钮在HTML中添加了onclick.第二个按钮的id为"googleButton",应该在我的javascript中附加一个事件处理程序.我尝试了许多不同形式的事件处理程序,并且所有这些形式都抛出了错误.我可以在jQuery中轻松地使用这种东西,也许我对原型语法缺少一些东西?

这是HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Assignment 10 - Part 1</title>
        <script src="./js/prototype.js" type="text/javascript"></script>
        <script src="./js/scriptaculous/scriptaculous.js?load=effects,controls" type="text/javascript"></script>
        <script src="./js/assignment10p1.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
        <fieldset>
            <legend>City Search</legend>
            <label for="cityName1">Enter a city name: </label>
            <input type="text" id="cityName1">
            <input type="button" value="Google City" onclick='googleSearch("cityName1")'>
            <input id="googleButton" type="button" value="Google City">
            <div id="cityAutoComplete" class="autocomplete"></div>
        </fieldset>   
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是javascript:

var cities = ["Aachen", "Aalborg", "Aarhus", "Abbeville", "Abbot", "Abbotsford",
              "Aberdeen", "Abernathy", "Acadia", "Acampo", "Acra", "Adams", "Addison",
              "Addy", "Adrian", "Agate", "Agua Caliente", "Aiken", …
Run Code Online (Sandbox Code Playgroud)

javascript click prototypejs

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