草庐IT

Java 枚举(或 int 常量)与 C 枚举

我正在尝试做一些在C中通常看起来像这样的事情:typedefenum{HTTP=80,TELNET=23,SMTP=25,SSH=22,GOPHER=70}TcpPort;方法1这是我在Java中使用enum得到的:publicstaticenumTcpPort{HTTP(80),TELNET(23),SMTP(25),SSH(22),GOPHER(70);privatestaticfinalHashMapportsByNumber;static{portsByNumber=newHashMap();for(TcpPortport:TcpPort.values()){portsByNu

java - 寻找合适的 Java 数据类型

publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);while(input.hasNextLine()){BigIntegernumber=newBigInteger(input.nextLine());intbitLength=number.bitlength();if(bitLengthLong.SIZE)System.out.println(number+"can'tbefittedanywhere.");}}任务:找到合适的数据类型示例输入:5-15015000015000000002133

java - 我的 HeapSort 代码有什么问题?

我正在尝试用java编写一个堆排序方法,但它并没有完全按照我想要的方式工作:publicclassHeapSort{privatestaticintn;privatestaticvoidswap(int[]A,inta,intb){inttmp=A[a];A[a]=A[b];A[b]=tmp;}privatestaticvoidinsert(int[]A,inti){intleft=i*2;intright=left+1;intmax=i;if(leftA[max]){max=right;}if(max!=i){swap(A,i,max);insert(A,max);}}publics

java - 我有一个返回 0 或 1 的 Java 方法。我可以让它返回一个 boolean 值而不生成分支指令吗?

在字节码级别,Javaboolean值表示为0或1。我有一个结果为0或1的表达式,但它是用int类型计算的。一个简单的例子是:publicstaticintisOdd_A(intvalue){returnvalue&1;}publicstaticbooleanisOdd_B(intvalue){return(value&1)==1;}上述方法的字节码如下所示:publicstaticintisOdd_A(int);descriptor:(I)ICode:0:iload_01:iconst_12:iand3:ireturnpublicstaticbooleanisOdd_B(int);d

java - 如何内存长度为 n 的递归路径搜索

第一次发帖时我想试试这个社区。我已经研究了几个小时,但我似乎找不到足够接近的例子来从中获取灵感。我不在乎答案是什么语言,但更喜欢java、c/c++或伪代码。我希望在网格中找到长度为n的连续路径。我找到了一个递归解决方案,我认为它很干净并且始终有效,但如果路径数量太多,运行时会很差。我意识到我可以迭代地实现它,但我想先找到一个递归解决方案。我不在乎答案是什么语言,但我更喜欢java、c/c++。问题是——对于String[]和intpathLength,该长度的路径有多少条。{"ABC","CBZ","CZC","BZZ","ZAA"}长度为3Thisisthe3rdand7thpat

Java归并排序, "merge"这一步应该用队列还是数组来完成?

这不是家庭作业,我没有钱上学,所以我在高速公路上的收费站轮类工作时自学(漫长的夜晚,几乎没有顾客)我试图通过首先思考实现一个简单的“合并排序”,如果你喜欢一些实际的学习,稍微拉伸(stretch)一下我的大脑,然后然后看看解决方案在我使用的手册上:“2008-08-21|算法设计手册|Springer|StevenS.Skiena|ISBN-1848000693”。我想出了一个解决方案,它使用数组作为缓冲区来实现“合并”步骤,我将其粘贴在下面。作者使用队列所以我想知道:是否应该改用队列?一种方法与另一种方法相比有哪些优势?(显然他的方法会更好,因为他是顶级算法学家而我是初学者,但我不能

java - 查找列表所有可能拆分的算法

我正在使用我创建的链表,其中包含一组数字作为数据。我需要找到一种方法来测试此列表的每个可能的两组分区,为此,我需要将列表分解为每个可能的两组组合。顺序并不重要,而且会有重复。Forinstance,foralistofnumbers{1431},thepossiblesplitsare{1}and{4,3,1}{4}and{1,3,1}{3}and{1,4,1}{1}and{1,4,3}{1,4}and{3,1}{1,3}and{4,1}{1,1}and{4,3}4个数字的列表并不难,但随着列表变大,事情变得越来越复杂,而且我很难看出规律。谁能帮我找到一个算法?编辑:抱歉,我没看到问题

java - AffineTransform 似乎忽略了组件边界

我有以下内容:publicclassParametricEQViewextendsJPanelimplementsPluginView{privatestaticfinalintBAND_WIDTH=3;privatestaticfinalintTHROW_HEIGHT=64;privatestaticfinalintWIDTH=128*BAND_WIDTH+2*MARGIN;privatestaticfinalintHEIGHT=2*THROW_HEIGHT+2*MARGIN;privatestaticfinalintMID_HEIGHT=THROW_HEIGHT+MARGIN;pr

java - 01 扭结背包

我正在用Java做一个背包,我们只使用重量而不使用任何值。权重限制为1000。我们从使用的键盘扫描了5个权重。不同之处在于,只要壁橱达到1000,您实际上就可以超过1000。因此,在一种情况下,我们有2个可能的权重990和1010,程序应该选择较高的一个。扫描的数字永远不会高于1000。packagekapsackidone;importjava.util.Scanner;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.*;publicclassKapsack{publicstatic

java - 2个Java方法java.lang.NullPointerException

我在以下代码上收到错误java.lang.NullPointerException错误。算法:如果n≤3,则通过蛮力找到最接近的点并停止。找到一条垂直线V,以将输入集分成两个不相交的子集PL和PR,它们的大小尽可能相等。左边或线上的点属于PL,右边或线上的点属于PR。因为集合是不相交的,所以任何点都不属于两者。递归地找到PL中最接近的点对的距离δL和最接近的点的距离δR在PR中配对。令δ=min(δL,δR)。输入集合P中的一对最接近点的距离或者是在递归步骤中找到的点的距离(即δ),或者由PL中的点和PR中的点之间的距离组成。来自PL的唯一候选点和来自PR的唯一候选点必须位于由V线左侧