小编aio*_*obe的帖子

为什么DecimalFormat允许字符作为后缀?

我正在使用DecimalFormat解析/验证用户输入.不幸的是,它在解析时允许字符作为后缀.

示例代码:

try {
  final NumberFormat numberFormat = new DecimalFormat();
  System.out.println(numberFormat.parse("12abc"));
  System.out.println(numberFormat.parse("abc12"));
} catch (final ParseException e) {
  System.out.println("parse exception");
}
Run Code Online (Sandbox Code Playgroud)

结果:

12
parse exception
Run Code Online (Sandbox Code Playgroud)

我实际上期望两者都有一个解析异常.如何判断DecimalFormat不允许输入"12abc"

java formatting

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

在Scala中反转/转置一对多地图

将a Map[A, Set[B]]变为a 的最佳方法是Map[B, Set[A]]什么?

例如,我该怎么转

Map(1 -> Set("a", "b"),
    2 -> Set("b", "c"),
    3 -> Set("c", "d"))
Run Code Online (Sandbox Code Playgroud)

进入

Map("a" -> Set(1),
    "b" -> Set(1, 2),
    "c" -> Set(2, 3),
    "d" -> Set(3))
Run Code Online (Sandbox Code Playgroud)

(我在这里只使用不可变集合.而我真正的问题与字符串或整数无关.:)

collections scala map

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

Java与C++中的函数重写

Java和C++中有两个相似的定义,但行为完全不同.

Java版本:

class base{
    public void func1(){
        func2();
    }
    public void func2(){
        System.out.println(" I am in base:func2() \n");
    }

}

class derived extends base{
    public void func1(){
        super.func1();
    }
    public void func2(){
        System.out.println(" I am in derived:func2() \n");
    }
};
public class Test
{
    public static void main(String[] args){
        derived d = new derived();
        d.func1();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

I am in derived:func2()
Run Code Online (Sandbox Code Playgroud)

C++版本:

#include <stdio.h>

class base
{
    public:
        void func1(){
            func2();
        }
        void func2(){
            printf(" I am in base:func2() …
Run Code Online (Sandbox Code Playgroud)

c++ java polymorphism overriding

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

如何在Eclipse中查看Android的错误日志(logcat)?

我在哪里/哪里可以看到当我的Android应用程序在Eclipse中崩溃时发生了什么(使用Run,而不是Debug)?

eclipse android error-log

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

Scala:如何从Set [K]和从K到V的函数创建Map [K,V]?

什么是创造一个最好的方式Map[K,V]从一个Set[K]从和功能KV

例如,假设我有

scala> val s = Set(2, 3, 5)
s: scala.collection.immutable.Set[Int] = Set(2, 3, 5)
Run Code Online (Sandbox Code Playgroud)

scala> def func(i: Int) = "" + i + i
func: (i: Int)java.lang.String
Run Code Online (Sandbox Code Playgroud)

什么是最简单的创建方式 Map[Int, String](2 -> "22", 3 -> "33", 5 -> "55")

functional-programming scala scala-collections

14
推荐指数
4
解决办法
6238
查看次数

外部与超级课程

超级优先级比外级优先级高吗?

考虑我们有三个类:

  1. ClassA的
  2. ClassB的
  3. ClassB中的匿名类,它扩展了ClassA

ClassA.java:

public class ClassA {
    protected String var = "A Var";

    public void foo() {
        System.out.println("A foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

ClassB.java:

public class ClassB {
    private String var = "B Var";

    public void test() {

        new ClassA() {
            public void test() {
                foo();
                System.out.println(var);
            }
        }.test();
    }

    public void foo() {
        System.out.println("B foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时new ClassB().test(),我得到以下输出(这是非常期待的):

A foo()
A Var
Run Code Online (Sandbox Code Playgroud)

问题:它是在某个地方定义的,内部类首先从超类中获取(方法和成员),然后从外部类中获取,还是依赖于JVM编译器实现?我查看了JLS(§15.12.3),但找不到任何参考,也许有人指出,但我误解了一些条款?

java inheritance inner-classes

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

漂亮的印刷表达尽可能少括号?

我的问题:在没有多余括号的情况下,打印表达式的最简洁方法是什么?


我有lambda表达式的以下表示:

Term ::= Fun(String x, Term t)
      |  App(Term t1, Term t2)
      |  Var(String x)
Run Code Online (Sandbox Code Playgroud)

按惯例App是左关联的,a b c即被解释为(a b) c和函数体尽可能向右伸展,? x. x y即被解释为? x. (x y).

我有一个很好的解析器,但现在我想要一个漂亮的打印机.这是我目前拥有的(伪scala):

term match {
    case Fun(v, t) => "(? %s.%s)".format(v, prettyPrint(t))
    case App(s, t) => "(%s %s)".format(prettyPrint(s), prettyPrint(t))
    case Var(v)    => v
}
Run Code Online (Sandbox Code Playgroud)

上面的打印机总是放置( )表达式(原子变量除外).因此Fun(x, App(Fun(y, x), y))它产生了

(? x.((? y.x) y))
Run Code Online (Sandbox Code Playgroud)

我想拥有

? x.(? y.x) …
Run Code Online (Sandbox Code Playgroud)

redundancy pretty-print

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

为什么protected可以在没有java继承的同一个包中访问?

  Modifier        Class     Package   Subclass  World
  public          Y         Y         Y         Y
  protected       Y         Y         Y         N
  no modifier     Y         Y         N         N
  private         Y         N         N         N
Run Code Online (Sandbox Code Playgroud)


  public class a {
  protected int x;
  }

  public class b {
        b() {
              a A=new a();
              A.x=9;//why we can access this field ?
        }
  }
Run Code Online (Sandbox Code Playgroud)

请帮助我了解Java中受保护的具体工作

java protected

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

ThreadPoolExecutor中的死锁

当所有线程都在func 中等待时,遇到ThreadPoolExecutor停在execute(Runnable)函数中的情况,workQueue为空.ThreadPoolgetTask

有人有什么想法吗?

ThreadPoolExecutor与创建ArrayBlockingQueue,和corePoolSize == maximumPoolSize = 4

[编辑]更准确地说,线程在ThreadPoolExecutor.exec(Runnable command)func中被阻止.它有执行任务,但没有执行.

[Edit2]执行程序被阻塞在工作队列(ArrayBlockingQueue)内的某处.

[Edit3] callstack:

thread = front_end(224)
at sun.misc.Unsafe.park(Native methord)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1114)
at
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
at java.util.concurrent.ArrayBlockingQueue.offer(ArrayBlockingQueue.java:224)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:653)
at net.listenThread.WorkersPool.execute(WorkersPool.java:45)
Run Code Online (Sandbox Code Playgroud)

同时workQueue为空(使用远程调试检查)

[Edit4]代码使用ThreadPoolExecutor:

public WorkersPool(int size) {
  pool = new ThreadPoolExecutor(size, size, IDLE_WORKER_THREAD_TIMEOUT, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(WORK_QUEUE_CAPACITY),
      new ThreadFactory() {
        @NotNull
        private final AtomicInteger threadsCount = new AtomicInteger(0); …
Run Code Online (Sandbox Code Playgroud)

java concurrency

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

基于双精度(子像素精度)的Java绘制线

我正在制作一个基本的Java程序,我想使用基本的swing Graphics.drawLine绘制一条线.

有没有办法根据双打来制作两个点,这样我可以使输出更准确,或者更好的另一种方式?

java swing

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