草庐IT

Java 对 int 和其他整数类型的行为

这个问题在这里已经有了答案:PerformanceloopwithintegervsLongindex(2个答案)关闭7年前。我编写了以下代码来测试java执行从0计数到一个巨大数字的简单任务需要多长时间:publicstaticvoidmain(String[]args){for(longk=0;k我运行程序并等待了几个小时。等了这么久我没办法只能引用一些计算来估计这个运行时间,简单的计算我确信程序最终打印消息可能需要100多年(取决于CPU)“完成”!但在尝试了下面的代码(似乎与上面的代码一样多的时间才能完成)之后,我意外地看到在我运行程序后的几分之一秒内打印了消息“完成”!pub

java - 找到两个不重叠的回文子序列的最大乘积

我试图找到字符串s的两个非重叠回文子序列的最大乘积,我们将其称为a和b。我想出了下面的代码,但它没有给出正确的输出:publicstaticintmax(Strings){int[][]dp=newint[s.length()][s.length()];for(inti=s.length()-1;i>=0;i--){dp[i][i]=1;for(intj=i+1;j对于输入字符串“acdamppomp”,我们可以选择a="aca"和b="pmpmp"来获得分数的最大乘积3*5=15.但我的程序输出为5。 最佳答案 首先你应该遍历dp

java - 计算一个数字被打开一本书的概率的算法

我有一本N“组合级别”可能会有所不同:从简单的数字求和(事件p.234对于x=9为真),到加减组合直至数字对[事件p.124为真对于x=1,2,3(4-1),4,5(4+1),6(2+4),7(1+2+4),8(12-4),12,14,16(14+2),23(24-1),24,25(24+1)]首先要注意的是,如果你打开一本书,你总是会看到第n页和第n+1页,所以应该在(2n-1,2n)对上计算概率,对于每个n,1这是我在做什么staticprotectedintsommaCifreNumero(intnumero){intretnum=0;for(charc:Integer.valu

java - 为什么 JVM 使用全 0 的巨型 int[]?

我知道JVM有一个内在的开销,我想做进一步的研究来确切地了解开销是什么。使用YourKit分析器,我发现有巨大的int[]充满了看似随机的信息。我的猜测是这些存储了一些性能指标和JVM用来优化应用程序的其他东西;但令我惊讶的是,所有元素的值都是0。为了得到我的结果,我使用了下面的“什么都不做”程序,因此结果只包括JVM上发生的事情。publicfinalclassMain{publicstaticvoidmain(String[]args)throwsInterruptedException{Thread.sleep(Long.MAX_VALUE);}}这是profiling结果的截图

java - 将数组分成相等大小,使得给定函数的值最小

我遇到了以下问题陈述。YouhavealistofnaturalnumbersofsizeNandyoumustdistributethevaluesintwolistsAandBofsizeN/2,sothatthesquaredsumofAelementsisthenearestpossibletothemultiplicationoftheBelements.Example:Considerthelist71119103513912.Theoptimizeddistributionis:ListA:5991213ListB:1371011whichleadstothediffer

Java - 碰撞检测(故障)

我正在为HS的最后一年项目开发一款平台游戏。然而...我使用的碰撞检测系统基本上是检查角色的特定部分是否与另一个block相交。碰撞似乎工作正常,除了它会导致一些错误,例如玩家在从侧面撞击时卡住或减速,或者在同时使用上键和键时被抛出。我的问题是;我如何改进碰撞代码以避免此类故障并产生某种“滑溜”碰撞?这就是我想要实现的那种碰撞效果:(https://i.imgur.com/KB1M3bt.mp4)(https://i.imgur.com/I44fmPc.mp4)这里是边界的预览这是它在游戏中的实际外观预览(clickforbetterquality)我用于碰撞检测的代码:(tempOb

java - 为什么 int p = (p=1) + p;字段定义失败但在方法中可以吗?

classTest{intp=(p=1)+p;//ERR"Cannotreferenceafieldbeforeitisdefined"intq=(q=1)+this.q;//fine!voidf(){intt=(t=1)+t;//fine!}}在第一种情况下,我的理解是:当执行赋值(或后续添加?)时,p被视为未声明。但为什么它在一个方法内是不同的呢?OKt不被视为未初始化,因为(t=1)在加法之前执行。好的,t不是一个字段,但目前也没有声明!我能以某种方式理解它吗?还是我只记住这个区别?也许这也有点相关:staticintx=Test.x+(x=1)+Test.x;//produce

java - 没有溢出的两个整数(或长整数)的平均值,向 0 截断

我想要一种在Java中为任意两个整数x、y计算(x+y)/2的方法。如果x+y>Integer.MAX_VALUE或GuavaIntMathuses这种技术:publicstaticintmean(intx,inty){//Efficientmethodforcomputingthearithmeticmean.//Thealternative(x+y)/2failsforlargevalues.//Thealternative(x+y)>>>1failsfornegativevalues.return(x&y)+((x^y)>>1);}...但这会向负无穷大舍入,这意味着例程不同意像

java - 罗马整数 - 但使用 "different"罗马数字系统

我参加了一次面试,表现非常糟糕。所以,现在我正试图找到问题的解决方案。这是面试问题:“我们有以下映射:M:1000,D:500,C:100,L:50,X:10,V:5,I:1.我们有以下规则:每个字母对应一个正整数值将这些值加在一起,除了......当一个值(或相同值的运行)后跟一个更大的值时,您减去该运行值的总和。例子:IIX->8MCCMIIX->1808我们得到了这个Java方法:intvalueOfRoman(charroman)。我们已经实现了Java方法:intromanToInt(Strings)"我知道这不是一个正确的罗马数字系统,但这是实际问题。我能够为一个合适的罗马

java - 如何从一串数字之间没有空格的数字中找到缺失的数字?

InputFormatThefirstlinewillcontainthesetofnumbersinthesequence.Numberarelistedinascendingorder.BoundaryConditions1OutputFormatThefirstlinewillcontainthemissingnumberM.ExampleInput/Output1Input:12346789Output:5Input/Output2Input596597598600601602Output:599Thenumbersasequenceinthesequenceare596597