小编djc*_*476的帖子

以递归方式遍历树的第一个问题

我正在尝试使用ANTLR树命令和递归遍历树.我目前的代码是:

public void traverseTree(Tree tree){
        int counter = 0;
        System.out.println(tree.toString());
        if (tree.getChildCount() > 0 && tree.getChild(0) != null){
            System.out.println(tree.toString() + counter++);
            tree = tree.getChild(0);
            traverseTree(tree);

        }
        while (tree.getParent().getChild(tree.getChildIndex() + 1) != null){
            System.out.println(tree.toString() + counter++);
            tree = tree.getParent().getChild(tree.getChildIndex() + 1);
            traverseTree(tree);

        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,它没有用.我在树中获得了很多条目,但没有明显的顺序.谁能看到我哪里出错了?

谢谢.

编辑:

我在下面做的评论应该是从这里开始的:

对不起,我应该删除打印语句,他们只是尝试调试它.我遇到的问题是它应该只搜索它开始的节点和该节点的任何兄弟节点,它不应该上升到一个级别,但确实如此,它会打印所有内容.(我将这个编辑成主要的,应该一直在那里开始,抱歉).

我设法最终使代码工作如下:

public void traverseTree(Tree tree){
        System.out.println(tree);
        if (tree.getChild(0) != null){
            traverseTree(tree.getChild(0));
        }
        if(tree.getParent().getChildCount() > 1){
            if(tree.getParent().getChild(tree.getChildIndex() + 1) != null)
            traverseTree(tree.getParent().getChild(tree.getChildIndex() + 1));
        }
    }
Run Code Online (Sandbox Code Playgroud)

java tree recursion antlr

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

C#到C++代码(使用CLI)给出错误

很抱歉这个名字非常模糊,我不太清楚如何更具体.

我在C++中使用C#包,C++代码报告错误,但我不确定为什么.

C#代码:

subwindowKit.SetBackground(Subwindow.Background.Transparent);
Run Code Online (Sandbox Code Playgroud)

C++代码:

subwindowKit->SetBackground(Csharppackage::Subwindow.Background.Transparent);
Run Code Online (Sandbox Code Playgroud)

哪个给出错误"不允许输入名称"(同时引用"Csharppackage :: Subwindow").

类似的语法早先工作,但我不确定为什么它不在这里.

c# c++

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

3D多边形的中心点计算

我正在尝试计算平面多边形的中心,并想知道解决这个问题的最佳方法是什么。

我可以访问形成多边形的顶点,但没有其他权限。

有没有人对如何解决这个问题有任何建议?

谢谢。

c# geometry

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

使用 VLC 和 PyQt 在 Python 中运行视频无法启动

我正在尝试通过 VLC 在 PyQt 中的帧中播放视频,我在这里遵循了类似的问题来获取要使用的示例代码:

class VideoPlayer(QMainWindow):
    def __init__(self, parent, inputPath):
        super(VideoPlayer, self).__init__(parent)
        self.setWindowTitle("Media Player")

        # creating a basic vlc instance
        self.instance = vlc.Instance()
        self.mediaplayer = self.instance.media_player_new()
        ##########video frame
        self.videoframe = QFrame(
            frameShape=QFrame.Box, frameShadow=QFrame.Raised
        )

        if sys.platform.startswith("linux"):  # for Linux using the X Server
            self.mediaplayer.set_xwindow(self.videoframe.winId())
        elif sys.platform == "win32":  # for Windows
            self.mediaplayer.set_hwnd(self.videoframe.winId())
        elif sys.platform == "darwin":  # for MacOS
            self.mediaplayer.set_nsobject(self.videoframe.winId())

        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        lay = QVBoxLayout(central_widget)
        lay.addWidget(self.videoframe)

        filename = inputPath
        media = self.instance.media_new(filename)
        self.mediaplayer.set_media(media)
        self.mediaplayer.play()
Run Code Online (Sandbox Code Playgroud)

每当我启动它时,尝试运行它只会给我这些错误:

[0c92dc18] mmdevice …
Run Code Online (Sandbox Code Playgroud)

python pyqt vlc

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

吐司不行,看不出为什么不行

因此,我正在尝试编写一个包含两个微调器和一个按钮的活动,当选择了两个微调器并按下按钮时,它将带您进入另一个活动.除了一个组合,它应该产生一个Toast,说你不能这样做.

无论如何,这是代码:

public void onClick(View v) {

              String spinnerchoice1 = ("spinner1Value");
              String spinnerchoice2 = ("spinner2Value");

              if((spinnerchoice1.equals("Walking")) && (spinnerchoice2.equals("Hiking"))){

                  Toast.makeText(getBaseContext(), "I'm sorry, this is not possible.", Toast.LENGTH_LONG).show();

              }else{

                  Intent i = new Intent(GetDirections.this.getApplicationContext(), DirectionDisplay.class);
                  i.putExtra("spinner1Value", transportSpinner.getSelectedItem().toString()); 
                  i.putExtra("spinner2Value", locationSpinner.getSelectedItem().toString());
                  GetDirections.this.startActivity(i);

              }

          }     
Run Code Online (Sandbox Code Playgroud)

谁能告诉我哪里出错了?

谢谢

java android if-statement spinner

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

同一功能的不同输入

所以我有一个函数,它接受2个不同的输入.

然而,我遇到了这种情况,我偶尔需要第三次输入.大多数时候我不这样做.

我目前的解决方案是我想要使用的实际功能仅由其他2个函数调用.这两个函数具有相同的名称,但是1接受3个输入而另外2个(在调用原始函数之前,这个函数只在第三个输入中设置一个空值).

这很有效,但感觉可能有更好的方法来处理这类问题.我唯一的另一个解决方案是每次调用第一个函数时声明第三个输入的空值,但这看起来更加混乱.

有一个更好的方法吗?我编写它的方式不好吗?

c++

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

标签 统计

c# ×2

c++ ×2

java ×2

android ×1

antlr ×1

geometry ×1

if-statement ×1

pyqt ×1

python ×1

recursion ×1

spinner ×1

tree ×1

vlc ×1