Tag: 循环

在Java中处理循环事件的优雅方式?

我觉得这对我来说不是一个特定的问题; 以前每个人都可能遇到过这个问题。 为了正确说明它,这是一个简单的UI: alt text http://sofzh.miximages.com/java/www.freeimagehosting.net 如您所见,这两个微调器控制着一个变量 – “A”。 唯一的区别是他们使用不同的视图来控制它。 由于这两个微调器的显示值是同步的,因此出现循环事件。 如果我更改顶部微调器,将更改“A”,并且底部微调器的值也将相应更新。 但是 ,更新底部微调器的调用(例如setValue)也会触发另一个事件,指示顶级微调器根据底部微调器的值进行更新。 因此创建一个错误的循环,最终可能导致StackOverFlowexception。 我以前的解决方案有点麻烦:我放置了一个保护布尔值来指示是否应该执行第二次更新调用。 现在我想问一下“ 我怎样才能优雅地处理这种情况? ( 一般来说,不是特定于纺纱厂 )” 谢谢 更新: 由于我有2个答案建议我使用观察者结构,我不得不说些什么。 就像我说的那样,它很棒但远非完美。 不仅因为其固有的复杂性,而且还因为它无法解决问题 。 为什么? 要了解原因,您必须在Java Swing中实现View和Model-Controller的紧密耦合 。 让我们以我的微调器UI为例。 假设变量A实际上是Observer对象。 然后,在从顶部微调器触发第一个状态更改事件后,观察者“A”将更新其值并触发PropertyChange事件以通知底部微调器。 然后是第二次更新,它更新了底部微调器的视图。 但是 ,更改底部微调器的视图不可避免地会触发冗余事件,该事件将尝试再次设置“A”的值。 然后,完全构造致命循环并抛出堆栈溢出。 理论上,Observer模型试图通过引入2个独立的反馈路径来解决直接循环。 链式更新赔率(在事件响应代码中)隐含地形成连接两个路径的桥,再次进行循环。

使用Java中的循环创建变量名称?

第一次海报,长时间读者所以对我温柔:) 请参阅以下代码,该代码用于生成财务年度中每月开始和结束的时间戳。 int year = 2010; // Financial year runs from Sept-Aug so earlyMonths are those where year = FY-1 and lateMonths are those where year = FY int[] earlyMonths = {8, 9, 10, 11}; // Sept to Dec int earlyYear = year -1; for (int i : earlyMonths) { month = i; Calendar cal […]

Java在for循环中使用getter还是创建局部变量?

我有一个运行4096次的for循环,它应该尽可能快。 性能在这里非常重要。 目前我在循环中使用getter方法,它只返回在循环进行时不会改变的字段中的值或对象。 例: for (;;) { doSomething(example.getValue()); } 使用getter是否有任何开销? 使用以下方式更快吗? 例: Object object = example.getValue(); for (;;) { doSomething(object); } 如果是,那么访问example.value等公共字段是否也是如此? 编辑:我不在循环中使用System.out.println() 。 编辑:某些字段不是final字段。 没有字段是volatile ,也没有synchronized方法(getter)。

使用循环来计算阶乘数,Java

我正在尝试计算7阶乘的值并显示答案,但是当我试图查找一种方法来执行此操作时,我一直在查找编写的代码,以便首先必须从用户输入一些数字,然后它会影响用户输入的任何数字。但是我已经知道我需要什么数字,显然,所以代码会有所不同,我无法弄清楚如何做到这一点。 我一开始就尝试过这个 public class Ch4_Lab_7 { public static void main(String[] args) { int factorial = 7; while (factorial 0) System.out.println(factorial*facto… factorial–; } } } 但它所做的只是显示7 * 7,然后是6 * 6,然后是5 * 5,依此类推,这不是我想要做的。 有谁知道如何正确地做到这一点?

如何使用iterator java将JSONObject转换为其所有键的新Map

我有一个JSONObject {“2016”:{“12”:{“20”:{“19”:{“DonationTime”:11111111111,”Donation”:10}}}}} 我想用每个键将它转换为新地图 int i = 0; for (Iterator keysItr = object.keySet().iterator(); keysItr.`hasNext(); i++) { String key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONObject) { value = toMap((JSONObject) value); map.put(key, value); } } SOP(map); //but here i want to get 4 maps } 我想得到4张地图 hourMap[19] = “{“DonationTime”:11111111111,”Donation”:10}”; dayMap[20] = “{“19”:{“DonationTime”:11111111111,”Donation”:10}}”; monthMap[12] = “{“12”:{“20”:{“19”:{“DonationTime”:11111111111,”Donation”:10}}}”; […]

检查字符串是否只是字母+空格?

我想编写一个传递字符串的静态方法,并检查该字符串是否仅由字母和空格组成。 我可以根据需要使用String的方法length()和charAt(i)。 我想的是以下内容:(对于伪代码抱歉) public static boolean onlyLettersSpaces(String s){ for(i=0;i<s.length();i++){ if (s.charAt(i) != a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) { return false; break; }else { return true; } } 我知道我的编码可能有错误,并且可能有更简单的方法,但请告诉我你的建议!

Prime测试,2位数字

我想打印所有2位数的素数。 这是我的代码: for(int input = 11; input <= 99; input += 2){ for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){ if(input%x != 0){ System.out.println(input); break; }else{ break; } } } 问题是它打印的数字如35或49不是素数。

确定数字数组是否可以分成两个数组,每个数组保持相同的数字总和

下面是一个代码,用于确定数字数组是否可以分为两个数组,每个数组都包含相同的数字总和。 例如:{1,3,2,6}可以分为{6}和{1,2,3},因此返回true而{1,5,7}不能分为两个,平衡数组,因此返回虚假 public boolean canBalance(int[] nums) { for (int i = 0; i < nums.length; i++) { int sum = 0; for (int j = 0; j < i; j++) sum += nums[j]; for (int j = i; j < nums.length; j++) sum -= nums[j]; if (sum == 0) return true; } return false; } […]

在Eclipse中进行大量迭代后的循环中的断点

假设我有以下代码。 在调试时,我希望Eclipse在完成100万次迭代后停止。 这个怎么做? 我不能手动做100万次。 for(int i = 0; i < 10000000; i++) { //some code }

java:循环上两个布尔值(false,true)

这是一个风格问题。 我想循环两次使用设置为false的变量,然后设置为true。 其中哪一个更清楚: 一个) for (final boolean on : new boolean[] { false, true} ) { doStuffBasedOnABooleanFlag(on); } B) for (int i = 0; i < 2; ++i) { final boolean on = (i == 1); doStuffBasedOnABooleanFlag(on); } C)别的东西 编辑:墨菲的无意识解释定律开始发挥作用…我原来看起来像这样的用例而不是doStuffBasedOnABooleanFlag: for (final boolean on : new boolean[] { false, true} ) { JButton button = […]