在实现compareTo()时,是否需要考虑"差异"的程度?
例如,如果我有3个对象,C1,C2和C3,那么C1 <C2 <C3.
C1.compareTo(C2)应该返回一个小于C2.compareTo(C3)的整数吗?
Comparable接口的文档似乎没有指定这种或那种方式,所以我猜测程度并不重要,但是知道返回特定数字是否有一些优势会很好(例如,改进TreeSet排序速度或其他东西).
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html#compareTo(T)
这可能很容易,但我迷失了如何"确定"它在这个范围内..
所以基本上我们有class Color很多功能可以从中实现.
我需要的这个功能是:
效果:将颜色值更正为0-255(含).如果值超出此范围,则调整为0或255,以较近者为准.
这是我到目前为止:
static int correctValue(int value)
{
if(value<0)
value=0;
if(value>255)
value=255;
}
Run Code Online (Sandbox Code Playgroud)
对不起这么简单的问题; /
我想调用一个方法,传递它的长度并让它生成一个随机的字母数字字符串.
是否有任何实用程序库可能有一堆这些类型的函数?
我正在尝试读取一个java文件,并在控制台中显示包,类和方法名称.这样的事情:
文件:Test.java
package tspec.test;
public class Test {
public void addTest () {}
public void deleteTest () {}
}
Run Code Online (Sandbox Code Playgroud)
输出:
package name: tspec.test
class name: Test
method name:
addTest
deleteTest
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
我被告知使用Java try-catch机制会有一些开销.因此,虽然有必要在try块中放置抛出checked异常的方法来处理可能的异常,但是在性能方面优化的做法是限制try块的大小以仅包含那些可能抛出异常的操作.
我不太确定这是一个明智的结论.
考虑以下两个实现处理指定文本文件的实现.
即使第一个产生一些不必要的开销是正确的,我发现它更容易遵循.通过查看语句来确定异常的确切位置尚不清楚,但评论清楚地表明哪些陈述是负责任的.
第二个比第一个更长更复杂.特别是,第一个很好的读行成语必须被修改以使readLine调用适合try块.
在函数中处理异常的最佳实践是什么?在定义中可能抛出多个异常?
这个包含try块中的所有处理代码:
void processFile(File f)
{
try
{
// construction of FileReader can throw FileNotFoundException
BufferedReader in = new BufferedReader(new FileReader(f));
// call of readLine can throw IOException
String line;
while ((line = in.readLine()) != null)
{
process(line);
}
}
catch (FileNotFoundException ex)
{
handle(ex);
}
catch (IOException ex)
{
handle(ex);
}
}
Run Code Online (Sandbox Code Playgroud)
这个只包含在try块中抛出异常的方法:
void processFile(File f)
{
FileReader reader;
try
{
reader = new FileReader(f);
}
catch (FileNotFoundException ex)
{
handle(ex); …Run Code Online (Sandbox Code Playgroud) 我正在审查算法课程中的一些旧笔记,动态编程问题对我来说似乎有点棘手.我有一个问题,我们有无限量的硬币,有一些面额x1,x2,... xn我们想要改变一些价值X.我们正在设计一个动态程序来决定是否可以改变X是否制造(不是最小化硬币数量,或返回哪些硬币,只是真或假).
我已经做了一些关于这个问题的思考,我可以看到这样做的递归方法,就像它...
MakeChange(X, x[1..n this is the coins])
for (int i = 1; i < n; i++)
{
if ( (X - x[i] ==0) || MakeChange(X - x[i]) )
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
转换这个动态程序对我来说并不容易.我怎么能接近这个?
我很好奇当人们进行TDD时,测试代码与生产代码的比率是多少合理/典型值.看一个组件,我有530行测试代码,用于130行生产代码.另一个组件有360行测试代码,用于360行生产代码.因此,单元测试需要大约3倍到5倍的代码.这是针对Javascript代码的.我没有太多经过测试的C#代码,但我认为对于另一个项目,我看的是测试代码的2倍到3倍,然后是生产代码.
在我看来,假设测试足够,该值越低,就会反映出更高质量的测试.纯粹的猜测,我只是想知道其他人看到的比例.
我知道代码行是一个松散的度量标准,但由于我为测试和生产编写了相同的样式(相同的间距格式,相同的注释等),因此值是可比较的.
在RPG程序(AS/400上的IBM语言之一)中,我可以"链接"到文件中以查看文件中是否存在记录(例如,某个客户记录).如果是,那么我可以使用新数据立即更新该记录.如果记录不存在,我可以写一条新记录.代码如下所示:
Customer Chain CustFile 71 ;turn on indicator 71 if not found
if *in71 ;if 71 is "on"
eval CustID = Customer;
eval CustCredit = 10000;
write CustRecord
else ;71 not on, record found.
CustCredit = 10000;
update CustRecord
endif
Run Code Online (Sandbox Code Playgroud)
我不熟悉SQL/C#,我想知道是否有办法从文件中进行随机检索(这就是RPG中的"链").基本上我想看看是否存在记录.如果是,请使用一些新信息更新记录.如果没有,那么我想写一个新的记录.我确信这是可能的,但不太确定如何去做.任何建议将不胜感激.
我正在逐字节读取二进制文件,我需要确定是否已达到eof.
feof()不起作用"只有在对不存在的字节进行读取请求时才设置eof".所以,我可以使用我的自定义check_eof:
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
但问题是,如果没有达到eof,我的文件指针会向前移动一个字节.因此,解决方案可能是使用ftell()然后fseek()将其置于正确的位置.
另一种解决方案可能是在一些临时存储中缓冲前面的字节.
更好的解决方案?
我存储的Integer对象表示我想要跟踪的对象的索引.稍后在我的代码中,我想检查特定对象的索引是否对应于我之前存储的那些整数之一.我这样做是通过创建一个ArrayList并从for循环的索引创建一个新的Integer:
ArrayList<Integer> courseselectItems = new ArrayList();
//Find the course elements that are within a courseselect element and add their indicies to the ArrayList
for(int i=0; i<numberElementsInNodeList; i++) {
if (nodeList.item(i).getParentNode().getNodeName().equals("courseselect")) {
courseselectItems.add(new Integer(i));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我想稍后检查ArrayList是否包含特定索引:
//Cycle through the namedNodeMap array to find each of the course codes
for(int i=0; i<numberElementsInNodeList; i++) {
if(!courseselectItems.contains(new Integer(i))) {
//Do Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我使用new Integer(i)will 创建一个新的Integer时,我可以使用比较整数ArrayList.contains()吗?也就是说,当我使用创建新对象时new Integer(i),如果用于创建它们的int值相同,那么它是否与先前创建的Integer对象相同?
我希望我没有把它弄得太清楚.谢谢您的帮助!
java ×4
algorithm ×1
alphanumeric ×1
arraylist ×1
c ×1
c# ×1
c++ ×1
cocoa ×1
comparable ×1
compareto ×1
feof ×1
file ×1
ibm-midrange ×1
integer ×1
objective-c ×1
random ×1
readability ×1
rpgle ×1
sql ×1
string ×1
tdd ×1
unit-testing ×1