今天有人告诉我return在Java中使用关键字.我编写了一个简单的for循环来验证数组中的某些东西.假设array是一个长度为n的数组,这是我的代码:
for (int i = 0; i < array.length; ++i) {
if (array[i] == valueToFind) {
return true;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)
现在有人告诉我这不是很好的编程,因为我n在循环中使用语句,这会导致垃圾收集失灵.因此,更好的代码将是:
int i = 0;
while (i < array.length && array[i] != valueToFind) {
++i;
}
return i != array.length;
Run Code Online (Sandbox Code Playgroud)
问题是我无法正确地阐述为什么第一个for循环不是一个好习惯.有人可以给我一笔费用吗?
我正在使用LWJGL.我正在尝试使用GL_TRIANGLE_STRIP创建一个简单的3D地图,它工作正常.但现在OpenGL会自动填满每个三角形.我想知道OpenGL是否有可能只绘制每个三角形的轮廓.通过这种方式,我可以更好地了解我正在做的事情.
我正在尝试用Java制作跨平台控制台进度指示器.因此,我使用System.out.printf方法打印出一个百分比:
System.out.printf("\t%2.2f%%\b\b\b\b\b\b", percentage);
Run Code Online (Sandbox Code Playgroud)
我把它放在一个for循环中.我遇到的问题是,在整个for循环完成之前,它不会打印任何东西.这是一个显示问题的程序示例:
public class Test {
public static void main(String[] args) {
for(int i =0; i<5000; i++){
System.out.printf("\b\b\b\b\b\b%2.2f%%", ((float) i/5000f)*100f);
System.out.flush();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为问题与编译器优化有关,但我并不害羞.奇怪的是,System.out.println当for循环运行时会打印.
编辑:我忘了将其添加到问题中.但我已经尝试冲洗缓冲区了.这没什么区别.添加%n到我的printf行的末尾但是它启动了换行符,我真的需要它来重用当前行.
所有对立的解决方 但它们只适用于真正的游戏机.不是netbeans或eclipse控制台.