选择12:00时比较时间不正确

我正在创建一个预订系统,我不想让用户在开始时间11:00和结束时间09:00(过去)预订(我正在使用24小时制)。 我有两个充满字符串的combobox,作为开始和结束时间(09:00,10:00,11:00,12:00,13:00 ……) 我有这个代码: String start = (String) startTime.getSelectedItem(); String end = (String) endTime.getSelectedItem(); try { if(new SimpleDateFormat(“hh:mm”).parse(start).before(new SimpleDateFormat(“hh:mm”).parse(end))){ System.out.println(“test1”);// future date – good }else{ System.out.println(“fail2”);// old date – bad } } catch (ParseException ex) { System.out.println(“error”); } 除非我选择开始/结束时间为12:00,否则此操作非常有效。 程序输出与它应该输出的相反,我不确定为什么。 如果我选择开始时间14:00和结束时间12:00,程序将输出fail2(良好输出), 如果我选择开始时间09:00和结束时间12:00程序将输出fail2(应该是test1), 如果我选择开始时间12:00和结束时间10:00,程序将输出test1(应该是fail2), 如果我选择开始时间12:00和结束时间15:00,程序将输出test1(良好输出) 这种类型的问题只发生在我选择12:00时。

如何取消焦点JTextField

当我的应用程序加载(使用netbeans)时,第一个JTextField会自动聚焦,在这个JTextField中,我写了“输入你的用户名”,当用户点击这个字段时,它会消失,但是当加载应用程序时,这个领域是重点,意味着我看不到“输入你的用户名”,如何在启动时不重点?

如何在Java中打破嵌套循环?

我有一个这样的嵌套循环结构: for (Type type : types) { for (Type t : types2) { if (some condition) { // Do something and break… break; // Breaks out of the inner loop } } } 现在我怎样才能摆脱两个循环。 我看过类似的问题,但没有人特别关注Java。 我不能应用这些解决方案,因为大多数使用了gotos。 我不想把内循环放在不同的方法中。 更新:当我完成循环块的执行时,我不想重新运行循环。

在Java中获得上个星期五的月份

我正在开发一个项目,其中要求将日期计算为给定月份的最后一个星期五。 我想我有一个只使用标准Java的解决方案,但我想知道是否有人知道更简洁或更有效的东西。 以下是我今年测试的内容: for (int month = 0; month month || d.get(d.MONTH) < month) { d.add(d.WEEK_OF_MONTH, -1); } Date dt = d.getTime(); System.out.println("Last Friday of Last Week in " + d.getDisplayName(d.MONTH, Calendar.LONG, Locale.ENGLISH) + ": " + dt.toString()); }

在Java中的枚举。 优点?

将Java中的枚举类似于类,而不仅仅是C / C ++中的常量集合有什么好处?

如何用Java创建一个进程

我想在我的应用程序中创建一个进程。 但是在浏览了Java的API后,我仍然没有完全理解它。 基本上我想创建一个多进程应用程序。 但是新进程是我的应用程序中的一个类。 我知道有些人可能会问为什么不创建一个线程? 因为该类正在调用matlab代码,所以问题和Java类就在这里 有没有办法做到这一点?

为什么最大递归深度我可以达到非确定性?

我决定尝试一些实验,看看我能发现堆栈帧的大小,以及当前执行代码在堆栈中的距离。 我们可能会在这里调查两个有趣的问题: 当前代码的深度是多少级别? 当前方法遇到StackOverflowError之前可以达到多少级别的递归? 堆栈当前执行代码的深度 这是我能想到的最好的: public static int levelsDeep() { try { throw new SomeKindOfException(); } catch (SomeKindOfException e) { return e.getStackTrace().length; } } 这看起来有点黑客。 它生成并捕获exception,然后查看堆栈跟踪的长度。 不幸的是,它似乎也有一个致命的限制,即返回的堆栈跟踪的最大长度为1024.除此之外的任何内容都被削减,因此此方法可以返回的最大值为1024。 题: 有没有更好的方法做到这一点,不是那么hacky并没有这个限制? 对于它的价值,我的猜测是没有: Throwable.getStackTraceDepth()是一个本机调用,它建议(但不能certificate)它不能用纯Java完成。 确定我们剩下多少递归深度 我们可以达到的等级数量将由(a)堆栈帧的大小和(b)剩余堆栈量确定。 让我们不要担心堆栈帧的大小,只需看看在我们遇到StackOverflowError之前我们可以达到多少级别。 这是我执行此操作的代码: public static int stackLeft() { try { return 1+stackLeft(); } catch (StackOverflowError e) { return 0; } } 它的工作令人钦佩,即使它在堆栈剩余量方面是线性的。 […]

Java的lambda语法有什么细分?

请解释Java 8的lambda方法的语法。 有很多关于lambda函数的解释,但我找不到语法的详尽解释,我发现很难学会正确复制语法,因为我不明白为什么他们’按原样重写。 这是我遇到的常见案例,由NetBeans提供: public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new MainAppJFrame(); }); } 所以,不知何故,以下lambda表达式正在解析为匿名的Runnable对象的run()方法: () -> { // do stuff } ->是lambda语法,对吗? 花括号只是包含匿名方法代码。 括号是否为空参数,因为在这种情况下我们正在创建一个Runnable.run()方法? 这一点对我来说都不太清楚。 我假设编译器知道根据SwingUtilities.invokeLater(Runnable)方法所期望的类型实例化一个匿名的Runnable ? 如果有两个SwingUtilities.invokeLater方法只在参数列表中有所不同,会发生什么? 显然,在这种特定情况下没有,但在其他地方可能: interface ExampleLambdaConsumer { public void doSomething(Runnable r); public void doSomething(java.lang.reflect.Method m); } class C implements ExampleLambdaConsumer { // implementations for doSomething methods […]

解决Apache Spark中的依赖性问题

构建和部署Spark应用程序时的常见问题是: java.lang.ClassNotFoundException 。 object x is not a member of package y编译错误object x is not a member of package y 。 java.lang.NoSuchMethodError 如何解决这些问题?

为什么这个减法不等于零?

我在ColdFusion代码中遇到了这些值,但Google计算器似乎有相同的“错误”,其中差异不为零。 416582.2850 – 411476.8100 – 5105.475 = -2.36468622461E-011 http://www.google.com/search?hl=en&rlz=1C1GGLS_enUS340US340&q=416582.2850+-+411476.8100+-+5105.475&aq=f&oq=&aqi= JavaCast将这些设置为long / float / double没有帮助 – 它会导致其他非零差异。