我想比较2个LocalDateTime对象而不考虑纳秒.这就是我目前正在做的事情.这有什么更好的方法吗?
LocalDateTime object1 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12000);
LocalDateTime object2 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12004);
System.out.println(object1.isEqual(object2)); // false
LocalDateTime objec1tWithoutNano = object1.minusNanos(object1.getNano());
LocalDateTime objec2tWithoutNano = object2.minusNanos(object2.getNano());
System.out.println(objec1tWithoutNano.isEqual(objec2tWithoutNano)); // true
Run Code Online (Sandbox Code Playgroud) 我想创建一个名为的包form validator.
写作更好吗?
form_validator,formValidator 要么formvalidator?我想提一下,我想避免 form.validator.那form-validator是被禁止的.
我以前使用过这个人为的代码
record Foo(int bar[]) {}
Run Code Online (Sandbox Code Playgroud)
这是利用 C 风格的数组符号。它在 Java 15 中编译得很好。
现在,突然之间,随着Java 16中记录的正式发布,它不再编译了。这是jshell的输出:
Run Code Online (Sandbox Code Playgroud)record Foo(int bar[]) {}
为什么它在 Java 15 中编译,这是一个错误吗?出于好奇,为什么它在记录中不受支持,而在 Java 的其他任何地方都受支持?
我正在使用javac来自Adoptium(基于 OpenJDK)。
问题陈述:我们有一个m*n矩阵.起点是左上角的单元格.我们只能在矩阵中向下或向右.在矩阵中随机选择目的地.现在我们需要找到具有以下约束条件的最佳例程:
我们应该将它减少到右侧,而不是使用左侧的例程.
在下面的例子中,我们不应该选择左侧解决方案,而是选择右侧的一个,因为它从(2,0)向下移动(向下移动,向下移动(2),而不是向右移动2) 0,1).
其他示例如下所示,这些都是最好的例程.
我正在研究这个问题一段时间.我已经研究了一些算法,如传递减少和Dijkstra,但没有弄明白.如果你想给我一些关于算法的提示,我可以调查一下这会很棒.
谢谢!
编辑2:
我收到了一些关于Dijkstra算法和使用动态编程的想法.我认为对于Dijkstra算法,如果您可以提供将此问题转换为图形问题的提示,那将是很好的.我正在研究算法并认为它的主要问题是不必访问单元格.在下面的示例中,如果我们删除其中一个目的地,则与左侧地图相比,整个例程将发生重大变化.
对于动态编程,我考虑了节点应该如何加入路径.优先级应如下:
但问题是它没有考虑动态视图的问题,这会输出错误的结果.
假设我有一个ComponentBase班级,谁是 的孩子ObjectContextDecorator和孙子ObjectContext。
public class ComponentBase extends ObjectContextDecorator {
}
public class ObjectContextDecorator extends ObjectContext {
public void set(String objectTypePath, String characteristicName, Object value) {
//...
}
}
public class ObjectContext {
public void set(String characteristicName, Object value, boolean forced) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
和上的set方法非常相似。考虑这个示例代码:ObjectContextDecoratorObjectContext
ComponentBase base = new ComponentBase();
base.set(""OTM4E_EFFLEVEL"", ""IE1 / STD"", true);
Run Code Online (Sandbox Code Playgroud)
两种方法的签名都适合正确调用的方法。我无法更改方法的签名,因为它不是我的代码。
编译器如何知道我打算调用哪个方法?
我知道在 IDE 上您可以指出您实际打算调用哪个方法,但在这种情况下,我使用类加载器来加载一个类,该类具有包含示例代码的方法。
我有这个简单的片段,我希望以更优雅的方式重新设计,可能使用最新的JDK 8功能:
String x = methodCall();
if(x==null) {x=method2();}
if(x==null) {x=method3();}
if(x==null) {x=method4();}
// doing calculation with X
Run Code Online (Sandbox Code Playgroud) 我已将Java更新为版本10.0.1,现在我无法再运行Eclipse了.
它显示了这条消息:
必须提供Java运行时环境(JRE)或Java开发工具包(jdk)才能运行eclipse.搜索以下位置后未找到Java虚拟机:
C:\Program Files\Java\ire1.8.0_144\bin
我尝试从高级设置插入新路径但不起作用.
我的周日挑战是将特定年份的工作日获取并保存到 CSV 等文件中。
我有以下代码,我面临的问题是:如何以特定格式(即 YYYYMMDD)打印日期,因为代码当前打印的内容类似于 2019 年 1 月 19 日星期六 00:00:00 CET。
另外,如果我可以排除周末,并且通常是否有更好的方法在 Java 8 中编写更短的代码。
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class DatesInYear
{
public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
public static void main (String[] args) throws java.lang.Exception
{
Date dt = new Date();
System.out.println(dt);
List<Date> dates = printDates("20190101","20191231");
Collections.reverse(dates);
System.out.println(dates.size());
for(Date date:dates)
{
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
System.out.println(format1.format(date));
}
}
public static List<Date> printDates(String fromDate, String toDate)
{
ArrayList<Date> dates = new ArrayList<Date>();
try …Run Code Online (Sandbox Code Playgroud) 我们如何使用 Gradle 任务删除 java 项目中未使用的导入
我有一个围绕一个名为Lights Out的小游戏的任务。
游戏由一个尺寸为 3x3 的棋盘组成,其中每个单元格可以是 1 或 0,例如:
0 1 0
1 1 0
0 0 0
Run Code Online (Sandbox Code Playgroud)
当所有单元格都为 1 时,游戏就被解决了,所以:
1 1 1
1 1 1
1 1 1
Run Code Online (Sandbox Code Playgroud)
并且在每一轮中,用户都可以单击任何单元格,这将翻转其状态以及向左、向右、向上和向下(如果存在)的邻居的状态。因此,单击第一个示例板中间的单元格将产生:
0 0 0
0 0 1
0 1 0
Run Code Online (Sandbox Code Playgroud)
现在我必须为游戏找到最糟糕的初始棋盘,并计算出如果玩得最佳,它需要多少回合才能达到已解决状态。
我试图编写一个递归求解器,在给定初始棋盘的情况下,它会找到解决游戏的最佳回合顺序。在那之后,我想用所有可能的初始板来喂养它。
但是,递归遇到堆栈溢出。所以我可能不得不以迭代的方式重写它。我怎样才能做到这一点?
这是代码,作为最小的完整示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.StringJoiner;
import java.util.stream.Collectors;
public class GameTest {
public static void main(String[] args) {
boolean[][] board = {
{false, false, false},
{false, true, false}, …Run Code Online (Sandbox Code Playgroud)