我的第一个问题,我很兴奋......自从上线以来我一直潜伏着并热爱这个网站,不过我为任何新手错误,格式化等道歉...
我正在尝试验证包含Java日期的字符串字段的格式.我们将以字符串形式接收日期,在将其解析为实际Date对象之前,我将验证其格式.传入的格式为YYYY-MM-DD格式.但是我坚持我的一个测试,如果我通过"1999-12-33"测试将失败(因为它应该是第33天)这个不完整的模式:
((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-([12][0-9]|3[01])
但是,只要我在下面添加粗体字符,它就会通过测试(但不应该)
((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-(0[1-9]|[1-9]|[12][0-9]|3[01])
*附加的注释,我知道我可以改变0[1-9]|[1-9]成0?[1-9],但我想打破一切下降到其最简单的格式,试图找出为什么这是行不通的.
这是我在一起完成所有不同日期场景的废料测试:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class scrapTest {
public scrapTest() {
}
public static void main(String[] args) {
scrapTest a = new scrapTest();
boolean flag = a.verfiyDateFormat("1999-12-33");
}
private boolean verfiyDateFormat(String dateStr){
Pattern datePattern = Pattern.compile("((19|20)\\d{2})-([1-9]|0[1-9]|1[0-2])-(0[1-9]|[1-9]|[12][0-9]|3[01])");
Matcher dateMatcher = datePattern.matcher(dateStr);
if(!dateMatcher.find()){
System.out.println("Invalid date format!!! -> " + dateStr);
return false;
}
System.out.println("Valid date format.");
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经编程了大约10年但是对Java非常新,所以请随意解释任何你认为合适的基本内容.
是IKVM.NET使用Java代码或Java利布斯在.NET应用程序的好方法?
有没有人使用这个工具?还有替代品吗?是否有可能在基于COM的应用程序(如Visual Basic 6或经典ASP)中调用Java函数/代码?
我有一个Android应用程序,我想检查一下,安装的应用程序名称是否与传递给包含此代码的函数的字符串相匹配.代码和示例如下:
private Boolean checkInstalledApp(String appName){
PackageManager pm = this.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
Boolean isInstalled = false;
for(ResolveInfo info: list) {
if (info.activityInfo.applicationInfo.loadLabel( pm ).toString()==appName){
isInstalled = true;
break;
}
}
return isInstalled;
}
Run Code Online (Sandbox Code Playgroud)
假设你打电话checkInstalledApp("SetCPU");,手机上的应用程序名称被称为同样的东西它应该返回true.但是,它永远不会.我记录了结果,它应该匹配,但它没有.任何人都可以告诉我为什么这不起作用?
我有以下泛型类:
public class GenericClass<E,T extends Comparable<T>>
{
public static <E, T extends Comparable<T>> GenericClass<E, T> create()
{
return new GenericClass<E, T>();
}
private GenericClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我简单地使用它的方式:
GenericClass<MyClass, Double> set = GenericClass.create();
Run Code Online (Sandbox Code Playgroud)
Eclipse编译显示没有错误,但是 - 使用ant构建时会出现以下错误:
MyClass.java:19: incompatible types; no instance(s) of type variable(s) E,T exist so that GenericClass<E,T> conforms to GenericClass<MyClass,java.lang.Double>
[javac] found : <E,T>GenericClass<E,T>
[javac] required: GenericClass<MyClass,java.lang.Double>
[javac] GenericClass<MyClass, Double> set = GenericClass.create();
Run Code Online (Sandbox Code Playgroud)
谢谢!
在台湾,我们有一个名为"Unicode At One(UAO)"的字符编码,它是BIG-5的扩展,但Java和Android不支持.
代码页位于http://moztw.org/docs/big5/table/uao241-b2u.txt
我的问题是,如何使用此Charset构建具有字节数组数据的String对象?
我想我会扩展String类并在其中做一些事情,但我不知道如何创建一个新的Charset.
我想计算我的函数在Java中执行需要多少CPU时间.目前我正在做如下.
long startTime = System.currentTimeMillis();
myfunction();
long endTime = System.currentTimeMillis();
long searchTime = endTime - startTime;
Run Code Online (Sandbox Code Playgroud)
但我发现,对于相同的I/PI,根据系统负载获得不同的时间.
那么,如何获得我的函数执行所需的精确CPU时间.
我试图在反编译后对一些Java .class文件进行反混淆处理,而且我遇到了代码的一部分,它以一种我认为不能使用标签的方式使用标签.我不知道这是否是反编译器误解标签的错误,或者代码是否故意以这种方式混淆.换句话说,可以在Java字节码中以这种方式使用标签吗?
请注意,标签出现在相关的break语句之后,而不是之前.它几乎似乎是使用它们作为goto,而不是用于退出循环的标签.根本没有循环,所以我对它们应该如何在这里使用感到困惑.
这里发生了什么?我在评论中标记了3个标签(###)
if (i != 96)
{
if ((i ^ 0xFFFFFFFF) != -98)
{
if (i == 98)
break label417; // ### Here are the three breaks... The relevant labels appear later in the code
if (i != 99)
break label540;
if (!bool)
break label461;
}
}
else
{
if (localwb == this.localWB5)
{
if (this.localWB4 != null) {
this.localWB4.a((byte)-92, this);
if (!bool);
}
else
{
this.localWB6.a((byte)-9, this);
}
return true;
}
if (localwb == this.localWB4)
{
this.localWB6.a((byte)-59, …Run Code Online (Sandbox Code Playgroud) 我已将一些文件复制粘贴到我有 git 的目录中,当我运行命令时,git status它给了我这个错误消息。
BUG: refs/files-backend.c:465: returning non-zero -1, should have set myerr!\nOn branch main\nRun Code Online (Sandbox Code Playgroud)\n当我用 恢复所有内容时git restore .,该消息仍然存在。
我试图找到该错误的含义,但我还没有\xe2\x80\x99找到任何东西。
\n