小编Maa*_*arx的帖子

对公共枚举的引用导致匿名类

我在编译时得到一个我没想到的匿名类.相关代码如下,然后更详细的解释:

CircuitType.java的整体:

public enum CircuitType { V110A20, V110A30, V208A20, V208A30 }
Run Code Online (Sandbox Code Playgroud)

来自Auditor.java,第3-9行:

public class Auditor {
    private String[] fileNames;
    private int numV110A20;
    private int numV110A30;
    private int numV208A20;
    private int numV208A30;
Run Code Online (Sandbox Code Playgroud)

来自Auditor.java,第104-121行:

[...]
switch (newCircuit.getType()) {
    case V110A20:
        this.numV110A20++;
        break;
    case V110A30:
        this.numV110A30++;
        break;
    case V208A20:
        this.numV208A20++;
        break;
    case V208A30:
        this.numV208A30++;
        break;
    default:
        System.err.println("An Error Has Occured.");
        System.exit(-1);
        break;
}
[...]
Run Code Online (Sandbox Code Playgroud)

从Circuit.java,第1-5行:

public class Circuit {
    private CircuitType myType;
    public CircuitType getType() {
        return this.myType;
    }
[...]
Run Code Online (Sandbox Code Playgroud)

当命令

javac *.java …
Run Code Online (Sandbox Code Playgroud)

java enums anonymous anonymous-class switch-statement

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

从文件中删除前导空格

我的shell在我的.login文件中调用了"fortune",向我提供了当天的一些消息.然而,一些命运以一个前导空白行开头,一些以两个开头,有些则根本没有任何前导空白行.这让我烦恼.

我坐下来用我自己的shell脚本来包装财富,它将从输入中删除所有前导空格,而不会破坏实际财富的任何格式,这可能故意有空格行.

它似乎不是一个简单的单行两分钟修复,当我阅读(芦苇)通过sed和grep的手册页时,我想我会在这里问我们的好顾客.

whitespace grep sed

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

UNIX:使用冒号替换换行符,在EOF之前保留换行符

我有一个格式的文本文件("INPUT.txt"):

A<LF>
B<LF>
C<LF>
D<LF>
X<LF>
Y<LF>
Z<LF>
<EOF>
Run Code Online (Sandbox Code Playgroud)

我需要重新格式化为:

A:B:C:D:X:Y:Z<LF>
<EOF>
Run Code Online (Sandbox Code Playgroud)

我知道你可以用'sed'做到这一点.使用'sed'进行此操作有十亿次谷歌点击率.但我正在努力强调可读性,简单性,并使用正确的工具来完成正确的工作.'sed'是一个消费和隐藏换行符的行编辑器.可能不适合这份工作!

我认为这项工作的正确工具是'tr'.我可以使用命令用冒号替换所有换行符:

cat INPUT.txt | tr '\n' ':'
Run Code Online (Sandbox Code Playgroud)

我完成了99%的工作.不过,我现在遇到了问题.通过用冒号替换所有换行符,我不仅在序列的末尾得到一个无关的冒号,而且在输入结束时我也丢失了回车符.它看起来像这样:

A:B:C:D:X:Y:Z:<EOF>
Run Code Online (Sandbox Code Playgroud)

现在,我需要从输入的末尾删除冒号.但是,如果我尝试通过'sed'传递这个已处理的输入来删除最后的冒号(现在,我认为,正确使用'sed'),我发现自己遇到了第二个问题.输入不再由换行符终止!对于所有命令,'sed'完全失败,因为它永远不会找到第一行输入的结尾!

似乎在某些输入的末尾附加换行符是一个非常非常常见的任务,并且考虑到我自己只是非常想在C中编写程序来执行此操作(这将需要大约8行代码),我可以想象一下,使用Linux内核中已有的工具,还没有一种非常简单的方法可以做到这一点.

unix newline sed append

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

Robot.delay(int) 与 Thread.sleep(long)

我有一个程序,其唯一目的是在无限循环中驱动 ajava.awt.Robot直到满足退出条件。

机器人快速连续执行多个动作,这需要它们之间有标准的 UI 延迟。为此,我使用java.awt.Robot.setAutoDelay(int ms),它似乎正是为此目的而设计的。

然而,在其他时候,我需要插入任意长的延迟才能完成操作。java.awt.Robot.delay(int ms)我似乎可以在使用或 之间进行选择java.lang.Thread.sleep(long ms),并且很好奇它们之间的区别是什么,以及我应该使用哪个。

我的直觉是将所有操作保持在同一个“位置”,并使用java.awt.Robot.delay(int ms). 然而,思考片刻后,我假设这java.awt.Robot.delay(int ms)将在机器人的操作堆栈上完成一个操作,如果这些是我在无限循环中唯一的延迟,我可能会非常快地、不必要地生成一个大得荒谬的结果。机器人的事件队列。

那时,我检查了APIjava.awt.Robot.delay(int ms),它告诉我以下内容:

休眠指定的时间。要捕获InterruptedException发生的任何 s,Thread.sleep()可以改为使用。

由于未能对此事获得任何有用的见解,我决定向你们询问。

java multithreading sleep delay awtrobot

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

如何在其JSplitPane中创建此FlowLayout包装?

我编写了这段代码示例来说明我在程序中遇到的问题.

我希望能够将JSplitPane的滑块向左滑动,超出按钮的边缘,压缩该JPanel,并让FlowLayout将按钮包裹到第二行.

相反,JSplitPane不允许我将滑块移动到屏幕上最右边的按钮,如果我调整整个JFrame的大小以强制压缩,按钮(我推测)只是在JPanel的右侧运行,下面是滑杆(我猜,因为我显然看不到它们).

我究竟做错了什么?

import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Driver implements Runnable {
    public static void main(String[] args) {
        (new Driver()).run();
    }
    public void run() {
        try {
            go();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }
    private void go() throws Exception {
        JFrame jframe = new JFrame("FlowLayoutTest");
        JPanel left = new JPanel();
        left.setBackground(Color.RED);
        left.setLayout(new BorderLayout());
        JPanel right = new JPanel();
        right.setBackground(Color.BLUE);
        right.setLayout(new BorderLayout());
        JSplitPane topmost =
            new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right);
        jframe.setContentPane(topmost);
        JPanel bottomleft …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager

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

维护 Selenium/Ruby 脚本匹配 Chromedriver+Chrome 版本的最佳实践

我有一个非常简单的 Selenium/Ruby 脚本,其中包含以下关键行摘录:

#!/usr/bin/env ruby
...
require 'selenium-webdriver'
...
options = Selenium::WebDriver::Chrome::Options.new
...
driver = Selenium::WebDriver.for :chrome, options: options
...
driver.quit
Run Code Online (Sandbox Code Playgroud)

很简单,它只使用操作系统 (Ubuntu Linux) 为 Chrome 和 Chromedriver 提供的默认产品。

有时,Chrome 会自动更新,而 Chromedriver 不会,导致脚本在运行时开始失败:

This version of ChromeDriver only supports Chrome version XX
Current browser version is YY with binary path /usr/bin/chromium-browser
Run Code Online (Sandbox Code Playgroud)

每次手动更新Chromedriver对我来说是微不足道的,但却很烦人。

自动保持 Chromedriver 更新以匹配 Chrome 的最佳实践方法是什么?

ruby selenium google-chrome selenium-chromedriver selenium-webdriver

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