我正在使用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"?
将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)
(我在这里只使用不可变集合.而我真正的问题与字符串或整数无关.:)
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) 我在哪里/哪里可以看到当我的Android应用程序在Eclipse中崩溃时发生了什么(使用Run,而不是Debug)?
什么是创造一个最好的方式Map[K,V]从一个Set[K]从和功能K来V?
例如,假设我有
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")
超级优先级比外级优先级高吗?
考虑我们有三个类:
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),但找不到任何参考,也许有人指出,但我误解了一些条款?
我的问题:在没有多余括号的情况下,打印表达式的最简洁方法是什么?
我有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) 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中受保护的具体工作
当所有线程都在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程序,我想使用基本的swing Graphics.drawLine绘制一条线.
有没有办法根据双打来制作两个点,这样我可以使输出更准确,或者更好的另一种方式?
java ×6
scala ×2
android ×1
c++ ×1
collections ×1
concurrency ×1
eclipse ×1
error-log ×1
formatting ×1
inheritance ×1
map ×1
overriding ×1
polymorphism ×1
pretty-print ×1
protected ×1
redundancy ×1
swing ×1