小编Sup*_*tar的帖子

三元表达式比布尔逻辑更快吗?

这看起来不像重复,因为只有一个我的解决方案涉及一个分支.

基本上,这两条线中哪一条更有效率?将是一个Java应用程序,但很高兴知道一般的答案.

shouldRefresh = useCache ? refetchIfExpired : true;

shouldRefresh = !useCache || refetchIfExpired;
Run Code Online (Sandbox Code Playgroud)

java performance boolean

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

+""比.toString()更好吗?

由于myObject.toString()失败myObjectnull(抛出a NullPointerException),因此它更安全myObject+"",因为它本质上正在做String.valueOf(myObject).concat(""),但不会失败,而是会导致字符串"null".

但是,这是一个好习惯吗?我的第一个想法是,似乎可能需要更长的时间才能执行,因为它隐含地调用了两种方法,但它确实有助于保证软件不会崩溃.

java object-to-string

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

为什么我会收到InvalidDnDOperationException?

对不起; 我不喜欢问"我为什么会这样exception?" 关于StackOverflow的问题(现在我想起来有点讽刺......),但我无法弄清楚这个异常的原因!我已经搜索了一个解决方案,但是那些弹出的是要么是一个微妙的异常,当人们试图访问Transferrable事件处理程序的外部,或者根本没有回答.

我正试图在DropTargetListener#drop(DropTargetListener)方法中做到这一点.我正在通过从运行程序的同一驱动器中拖动PNG来测试这一点,这让我觉得数据随时可用.我的相关代码和结果异常如下:

(为简洁起见,缩短了注释中的行号,=>如果是错误行,则后跟其中)

        // package declaration
        // imports

/*45 */ public class BHFileChooser extends JComponent implements DropTargetListener
/*46 */ {
            // object declaration 

            ...

            // initialization methods

            ...

/*186*/     @Override
/*187*/     public void dragEnter(DropTargetDragEvent dtde)
/*188*/     {
/*189*/         setState(State.EVALUATING);
/*190*/         setState(canAccept(dtde.getTransferable()) ? State.EVALUATED_ACCEPTABLE : State.EVALUATED_UNACCEPTABLE);
/*191*/         validate();
/*192*/     }
/*193*/ 
/*194*/     @Override
/*195*/     public void dragExit(DropTargetEvent dte)
/*196*/     {
/*197*/         setState(State.WAITING); …
Run Code Online (Sandbox Code Playgroud)

java swing drag-and-drop exception

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

Kotlin有方法CALL标签吗?

我正从Swift搬到Kotlin,到目前为止一直很喜欢它.但是,我习惯于声明这样的方法(假装引用的方法存在并且工作):

// Swift method declaration
func drawCircle(inRect rect: CGRect, antialiased: Bool) {
    super.antialiased = antialiased
    super.drawCircle(inRect: rect)
}
Run Code Online (Sandbox Code Playgroud)

并称他们为:

drawCircle(inRect:myRect, antialiased: false)
Run Code Online (Sandbox Code Playgroud)

这是一个精美的自我记录,读起来像英语.但是,在Kotlin中,类似的方法如下:

fun drawCircle(inRect: Rectangle, antialiased: Boolean) {
    super.antialiased = antialiased
    super.drawCircle(inRect)
}
Run Code Online (Sandbox Code Playgroud)

使用名为的变量已经开始听起来很奇怪inRect.但是当我打电话时它会变得更糟:

drawCircle(myRect, false)
Run Code Online (Sandbox Code Playgroud)

在这里,我们看到了最大的问题:人们可以通过单独阅读这条线来猜测,这myRect是一个将绘制圆的矩形.但是,是什么true?它可能是抗锯齿,是的,但它也可能是不透明地绘制它,还是一些关于是否要绘制它的切换!无论如何,我可以举出更多理由说明为什么Swift和Objective-C程序员喜欢用方法调用他们的标签,但我已经说明了我的观点.

有没有办法在Kotlin中启用方法调用标签?

self-documenting-code kotlin

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

如何判断Kotlin或Java中的数字是10的幂?

我有一个数字(64位int),并想知道它是否是10的纯函数.也就是说,1跟随0或0以上的零.有没有一种有效的方法来做到这一点,而不涉及将其变成一个字符串?


目前我这样做:

科特林

fun isPowerOf10(n: Long): Boolean {
    val logN = Math.log10(myInt.toDouble())
    return logN != Math.floor(logN)
}
Run Code Online (Sandbox Code Playgroud)

Java的

static boolean isPowerOf10(long n) {
    double logN = Math.log10((double) myInt);
    return logN != Math.floor(logN);
}
Run Code Online (Sandbox Code Playgroud)

但它失败了isPowerOf10(999_999_999_999_999_999)(和负面版本),因为在转换为double并且log10正确输出时精度损失18.0.

java math logarithm kotlin

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

在Java中创建数独

我正在创建一个程序来发明一个新的数独谜题.我最初计划这样做的方法是发明一个新的谜题,然后删除随机数.但是,我使用(见下文)创建新拼图的算法最多可能需要5分钟才能完成.有没有人有更快的解决方案?

创建算法


    for (int x = 0; x < boardWidth; x++) //boardWidth is the number of fillable squares wide and high the board is. (9 for a standard Sudoku board)
    {
      for (int y = 0; y < boardWidth; y++)
      {
        int errorCount = 0;
        do
        {
          boardVals[y][x] = (byte)(rand.nextInt(boardWidth) + 1);
          errorCount++;
          if (errorCount > Math.pow(boardWidth, 4)) //If the square has been tried to be filled up to boardWidth^4 times (6,561 for a standard Sudoku board), it clears the …
Run Code Online (Sandbox Code Playgroud)

java creation sudoku

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

Java外观在不关闭窗口的情况下进行更改

我想知道如何在不让用户离开甚至关闭窗口的情况下改变我的java应用程序的外观.我知道这是可能的,正如我已经看到的那样.我尝试实现它,下面显示的代码,但它只有在我setLookAndFeel()显示窗口之前调用我的方法时才有效.


我究竟做错了什么?


package lookandfeeltester;

import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class MainJFrame extends javax.swing.JFrame
{
  public MainJFrame()
  {
    setDefaultLookAndFeelDecorated(true);
    initComponents();
  }

  @SuppressWarnings("unchecked")
  private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;

    buttonGroup = new javax.swing.ButtonGroup();
    metalRadioButton = new javax.swing.JRadioButton();
    nimbusRadioButton = new javax.swing.JRadioButton();
    motifRadioButton = new javax.swing.JRadioButton();
    windowsRadioButton = new javax.swing.JRadioButton();
    windowsClassicRadioButton = new javax.swing.JRadioButton();
    menuBar = new javax.swing.JMenuBar();
    fileMenu = new javax.swing.JMenu();
    exitMenuItem = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.GridBagLayout());

    buttonGroup.add(metalRadioButton);
    metalRadioButton.setText("Metal");
    metalRadioButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) { …
Run Code Online (Sandbox Code Playgroud)

java swing look-and-feel

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

奇怪的运行时错误(声明时ClassCastException)

我正在制作的程序中有以下代码:

01  public class Clazz<T>
02  {
03    T[] t;
04    
05    public Clazz<T> methodA(int... ints)
06    {
07      Clazz<Integer> ints2 = new Clazz<>();
08      int remInd[] = new int[t.length - ints2.t.length];
09      return this;
10    }
11  }
Run Code Online (Sandbox Code Playgroud)

但是当我运行方法时methodA,我收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
    at Clazz.methodA(Clazz.java:8)
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?当然,与所讨论的巨大类相比,我所显示的代码是不完整的(例如,t在检查其长度时,数组不会为空),但我相信我已经展示了重要的一切.这为什么不运行?

注意:我使用JDK 1.7进行此操作,这就是为什么第7行编译和工作的原因

工作方案


无论出于何种原因,我决定实施以下解决方案,并且它有效:

01  public class Clazz<T>
02  {
03    T[] t;
04    
05    public Clazz<T> methodA(int... ints)
06    { …
Run Code Online (Sandbox Code Playgroud)

java classcastexception

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

批处理文件不调用其他批处理文件

我有一组三个自动生成的批处理文件,总结如下

arbitrary.bat

@ECHO OFF
set APPDATA=C:\Users\%USERNAME%\AppData\Minecrafts\1.9p5\
set T1=ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
set T2=³ÍÍÍ 1.9p5 ÍÍͳ
set T3=ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
masterControl
Run Code Online (Sandbox Code Playgroud)

masterControl.bat

varInit
[main program logic...]
Run Code Online (Sandbox Code Playgroud)

varInit.bat

set U=valueOfU
set P=valueOfP
set S=valueOfS
pause
Run Code Online (Sandbox Code Playgroud)

这个想法是arbitrary.bat运行,其他两个也被调用.但是,程序在masterControl运行第一行后立即停止(所有行都varInit成功运行).**为什么这个程序没有超过第一行masterControl

batch-file

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

是否可以选择所有没有CSS类的元素?

W3C建议书定义了通过使用选择具有已定义类的任何锚点的能力A[CLASS]{/*Code*/},但是有没有先例?

我可以选择所有没有课程的锚吗?

我的直觉是使用A[~CLASS]{/*Code*/},但没有记录,并A[CLASS=]{/*Code*/}选择所有具有类名称为空字符串的锚点(例如,<A CLASS="" HREF="http://example.com/">This anchor has a class, but it's empty.</A>).

用法示例


在这段代码中,我只希望无类链接为绿色.

<HTML>
<HEAD>
<LINK REL="stylesheet" TYPE="text/css" HREF="http://example.com/externalUneditableStyles.CSS" />
<STYLE>
A.deadLink{
color:#FF0000 !important;
}
A{
color:#00FF00;
}

</STYLE>
</HEAD>

<BODY>
<A HREF="http://fakesite.not/" CLASS="deadLink">This link is red, as specified by the CSS above.</A>
<A HREF="http://example.com/">This link is green, as specified by the CSS above.</A>
<A HREF="#/childpage/" CLASS="childLink">This is a link to a child page, and is styled by external uneditable …
Run Code Online (Sandbox Code Playgroud)

html css anchor css-selectors

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