Tag: for loop

如何处理ConcurrentModificationException

我从冷却计时器得到一个ConcurrentModificationException。 我使用线程每秒减少值,如下所示: public class CoolDownTimer implements Runnable { @Override public void run() { for (String s : playerCooldowns.keySet()) { playerCooldowns.put(s, playerCooldowns.get(s) – 20); if (playerCooldowns.get(s) <= 0) { playerCooldowns.remove(s); } } } } 所以每一秒都应该将每个玩家的冷却时间减少20,但问题是我在运行程序时每隔几个小时就会获得一次CME,特别是当很多人在线时。 如何使它如果仍在修改列表,它将等到当前操作完成并创建一种修改队列? 谢谢! 这是堆栈跟踪: 2012-06-18 20:59:05 [WARNING] Task of ‘SurvivorsClasses’ generated an exception java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:839) at java.util.HashMap$KeyIterator.next(HashMap.java:874) at me.zachoooo.survivorclasses.CoolDownManager$CoolDownTimer.run(CoolDownManager.java:13) at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:126) […]

Java for循环值或引用

我在我的代码中发现了一个问题。 首先是代码: public class Main { /** * @param args */ public static void main(String[] args) { String[] blablubb = { “a”, “b”, “c” }; for(String s : blablubb) { s = “over”; } printArray(blablubb); for (int i = 0; i < blablubb.length; i++) { blablubb[i] = "over"; } printArray(blablubb); } public static void printArray(String[] […]

Java for循环优化

我用java for循环做了一些运行时测试,并发现了一个奇怪的行为。 对于我的代码,我需要原始类型的包装器对象,如int,double等,以模拟io和输出参数,但这不是重点。 只需看我的代码。 具有字段访问权限的对象如何比原始类型更快? 具有prtimitive类型的for循环: public static void main(String[] args) { double max = 1000; for (int j = 1; j < 8; j++) { double i; max = max * 10; long start = System.nanoTime(); for (i = 0; i < max; i++) { } long end = System.nanoTime(); long microseconds = (end […]

如何在数组中找到并打印最大值的索引?

对于我的项目,我需要制作一个以10个数字作为输入的程序,并显示这些数字的模式。 该程序应使用两个数组和一个方法,该方法将数组作为参数并返回数组中的最大值。 基本上,我到目前为止所使用的是使用第二个数组来跟踪数字出现的次数。 查看初始数组,您将看到模式为4.(最多出现的数字)。 在第二个数组中,索引4的值为2,因此2将是第二个数组中的最大值。 我需要在第二个数组中找到这个最大值,并打印索引。 我的输出应为’4’。 我的程序很好,直到我试图生成’4’,我尝试了一些不同的东西,但似乎无法让它正常工作。 感谢您的时间! public class arrayProject { public static void main(String[] args) { int[] arraytwo = {0, 1, 2, 3, 4, 4, 6, 7, 8, 9}; projecttwo(arraytwo); } public static void projecttwo(int[]array){ /*Program that takes 10 numbers as input and displays the mode of these numbers. Program should use […]

Java循环效率(“for”与“foreach”)

(对于那些熟悉JVM编译和优化技巧的人来说一个问题…… 🙂 是否有任何“for”和“foreach”模式明显优于其他模式? 考虑以下两个例子: public void forLoop(String[] text) { if (text != null) { for (int i=0; i<text.length; i++) { // Do something with text[i] } } } public void foreachLoop(String[] text) { if (text != null) { for (String s : text) { // Do something with s, exactly as with text[i] } } […]

如何每5秒更新一次textview变量

可能重复: 每N秒更新一次TextView? 在这里,我想在每次迭代计算后更新textview中的Hr值,但每次延迟2秒。 我不知道该怎么做。 我现在在textview中得到的是迭代的最后一个值。 我希望所有的值都以恒定的延迟显示。 任何人帮忙。 for(int y=1;y<p.length;y++) { if(p[y]!=0) { r=p[y]-p[y-1]; double x= r/500; Hr=(int) (60/x); Thread.sleep(2000); settext(string.valueof(Hr)); } }

为什么java中有两种不同的for循环?

我有一个for循环,我不知道它是如何工作的。 我熟悉: for(int i = 0; i <= 9; i++) { /* implementation */ } 我对以下forms的for循环感到困惑: String[] myString = new String[] {“one”, “two”, “three”, “some other stuff”}; String str1 = “”, str2 = “”; for (String s : myString) { /* implementation */ } 这些类型的for循环如何工作? 他们做什么不同然后定期循环?

为什么使用double的for循环无法终止

我正在查看旧的考试题目(目前是大学的第一年)。我想知道是否有人可以更彻底地解释为什么以下for循环不会在它应该结束时结束。 为什么会这样? 我知道它因为四舍五入错误而跳过100.0,但为什么呢? for(double i = 0.0; i != 100; i = i +0.1){ System.out.println(i); }

Recursion vs For循环 – Factorials,Java

获得阶乘(循环与递归)的这两种方法中的哪一种更有效/更快? 如果那个可以改进,怎么样? 语言:Java private static long factrecur(int n) { if (n == 0) { return 1; } else { return n * factrecur(n-1); } } private static long factloop(int a) { long total = 1; for (int b=a;b>=1;b–) { total *= b; } return total; }

我如何找到数组中的最大值?

在java中,我需要能够通过一个数组并找到最大值。 我如何比较数组的元素以找到最大值?