草庐IT

java - java中的计算器错误

我是java新手。我正在编写一个类,其中构造函数必须检查价格参数并确保它不是负数。如果它是负数,它必须将价格设置为零。我在查看价格时收到stackoverflow错误。我做错了什么可以获得帮助吗?publicclassBook{privateStringtitle;privateStringauthor;privateStringisbn;privateintpages;privatebooleanpback;privatedoubleprice;/***ConstructorforobjectsofclassBook*/publicBook(StringbookTitle,Strin

java - 哈希集。在大集合中表现缓慢

我遇到了一个我找不到解决方案的问题。我正在使用HashSet来存储值。我存储的值属于自定义类型Cycles,其中我已经覆盖了HashCode和equals如下,以确保缓慢的性能不是由hascode或equal方法引起的此外,我已将哈希集的初始容量设置为10.000.000@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+(int)(cycleId^(cycleId>>>32));returnresult;}@Overridepublicbooleanequals(Objectobj

java - 如何从三个 long 生成哈希码

我有一个以坐标作为键的HashMap。Coordinates有3个长整型,分别代表x、y和z坐标。(坐标是并且需要是自定义类,坐标需要是longs)。现在我希望能够访问例如字段[5,10,4]通过做:hashMap.get(newCoordinate(5,10,4)).我已经实现了equals方法,但这还不够,因为显然我还需要为hashCode提供一个实现。所以我的问题是如何从三个long生成唯一的hashCode?。附加:使用来自外部库的哈希生成器不是选项。 最佳答案 JoshuaBloch在chapter3中告诉您如何为Coor

java - 如何在 Java 中返回一个临时的 int 数组

这个问题在这里已经有了答案:Arrayinitializationsyntaxwhennotinadeclaration(4个答案)关闭6年前。我如何设法在Java中返回一个临时数组(为了节省代码行,而不创建变量)。做印心的时候,我可以用int[]ret={0,1};返回时无法使用return{0,1};我是否遗漏了什么或者是否有强制打字来做到这一点?我想到了使用newint[]作为下面的答案。然而,我们在启动时不需要newint[]的原因是什么?

java - 检查字符串中除特殊符号外的所有字符是否均为大写

这是我第一次使用Java的Pattern类,因为我想检查一个字符串是否为大写。“.”等特殊符号和“,”应被视为大写。以下是预期结果:"test,."shouldreturnfalse//becauseithasalowercasecharacter"TEST,."shouldreturntrue//becauseallareuppercaseandthespecialcharacters"test"shouldreturnfalse//becauseithasalowercasecharacter"TEST"shouldreturntrue//becauseallareuppercas

java - 为什么 false && (false)?false :true return true

请不要看条件,因为它们在这里是为了便于理解行为为什么result等于true?booleanresult=false&&(false)?false:true;我知道我们可以通过以下方式解决问题:booleanresult=false&&(false?false:true);但我只是想知道为什么第一个语法不正确,看起来像'?'运算符比'&&'具有更高的优先级 最佳答案 三元条件(?:)具有较低的precedence比&&。所以booleanresult=false&&(false)?false:true;(有不必要的括号);相当于bo

java - 谁调用了java中的main函数?

publicstaticvoidmain(String[]args){booleant=true;System.out.println("Beforereturn");if(t)return;System.out.println("notexecute");}在上面的代码中,当使用return时,它应该返回调用主函数的函数。究竟是谁调用了main函数? 最佳答案 Java虚拟机。 关于java-谁调用了java中的main函数?,我们在StackOverflow上找到一个类似的问题:

java - 在 Java 中,如何在枚举本身中获取枚举的值?

我想为我的枚举Color覆盖toString()。但是,我无法弄清楚如何在Color枚举中获取Color实例的值。有没有办法在Java中执行此操作?例子:publicenumColor{RED,GREEN,BLUE,...publicStringtoString(){//return"R"forRED,"G",forGREEN,etc.}} 最佳答案 也可以开启this的类型,例如:publicenumFoo{A,B,C,D;@OverridepublicStringtoString(){switch(this){caseA:ret

java - 从主要包含空值的 Comparables 列表中获取最小值和最大值的最佳方法是什么?

我正在考虑这样的事情:publicstatic>TminOf(T...ts){SortedSetset=newTreeSet(Arrays.asList(ts));returnset.first();}publicstatic>TmaxOf(T...ts){SortedSetset=newTreeSet(Arrays.asList(ts));returnset.last();}但不是null安全的,这也是我想要的。你知道解决这个问题的更好方法吗?编辑:评论后我也试过min():publicstatic>TminOf(T...ts){returnCollections.min(Array

java - 如何提高递归方法的性能?

我正在学习数据结构和算法,这是一个我一直困扰的问题。我必须通过将值存储到内存中来提高递归调用的性能。但问题是未改进的版本似乎比这更快。有人能帮帮我吗?Syracuse数是由以下规则定义的正整数序列:syra(1)≡1syra(n)≡n+syra(n/2),如果nmod2==0syra(n)≡n+syra((n*3)+1),否则importjava.util.HashMap;importjava.util.Map;publicclassSyraLengthsEfficient{intcounter=0;publicintsyraLength(longn){if(nmap=newHashM