2011-04-17 62 views
-1

我试图来连接在嵌套循环计数器,与具有较小的最大内循环,这样我的输出应为:印刷柜台

1.1 
1.2 
1.3 
1.4 
2.1 
2.2 
2.3 
2.4.... 

当内循环完成它的周期然后在父环路再次启动时重新启动。

现在我有

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
public class ForLoop 
{ 

    public static void main(String[] args) throws Exception{ 
     try { 
      PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("/Users/evanlivingston/1.txt", true))); 

     for (int counter = 0; counter <= 15; counter++) 
      out.println(counter); 
      for (int counter2 = 0; counter2 <=4; counter2++) 
       out.print(counter2); 
     out.close(); 
     } catch (IOException e) { 
     } 
    } 
} 

好像我必须构建由变量(计数器)变量,然后打印。

+1

'for'循环没有嵌套在这里,因此您认为如果您不保留'{}'' for','for'后面只有一条语句被认为是在循环之内 – Mahesh 2011-04-17 19:32:44

+1

如果你使用的是像Eclipse或NetBeans这样的IDE,告诉它自动格式化你的代码,你会发现你的缩进(控制流你想要的)不是你实际编程的控制流程 – 2011-04-17 19:40:00

回答

1

除了缺少的嵌套,你在内环打印外值:

public class ForLoop 
{ 
    public static void main (String[] args) 
    { 
     for (int outer = 0; outer <= 15; ++outer) 
      for (int inner = 0; inner <=4; ++inner) 
       System.out.println (outer + "." + inner); 
    } 
} 

但由于每个表达式只有一条线,我们可以在这里省略花括号。 :)(更精确:第二个for循环由2行组成,但第二个由第一行覆盖,因此它是外部'for'的一个表达式。

对于循环,通常使用i和j。如果不是,则采用比counter更合理的名称,这是一个实现细节,而不是语义名称。

3

它并不总是一个好主意,使用循环无括号:

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
public class ForLoop 
{ 

    public static void main(String[] args) throws Exception{ 
     try { 
      PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("/Users/evanlivingston/1.txt", true))); 

     String output = ""; 
     for (int counter = 1; counter < 16; counter++) { 
      output = Integer.toString(counter) + "."; 
      for (int counter2 = 1; counter2 < 5; counter2++) { 
       out.print(test + Integer.toString(counter2) + "\n"); 
      } 
     } 
     out.close(); 
     } catch (IOException e) { 
     } 
    } 
} 

如果不围绕使用大括号您的语句,只for语句的下一行是在循环使用。所以你的for循环并不是真正的嵌套。

+2

括号是圆括号,我想你是在说大括号 – 2011-04-17 19:34:22

+0

这是真的。我的英语不是很有天赋,但我纠正了它。谢谢。 – RoflcoptrException 2011-04-17 19:38:18

1

值得注意的是你的for循环没有嵌套。像这样的错误是Java的每个编码标准的原因,我甚至看到要求使用{}来指示应该为每个迭代执行语句。

0

你应该考虑一些事情:

  • 始终相应地格式化你的代码。它减少了您在确定代码流时犯错的可能性。
  • 务必确保您正在关闭手柄。一个好的做法是始终将close()放在finally块中,以确保它不管被调用。或者,如果您使用C#,只需使用using(){}构造为您执行此操作。
  • 数值计算通常比字符串连接更快,特别是在规模上。

这里有一个替代解决方案的人提出:

public static void main(String[] args) throws IOException { 

    PrintWriter out = null; 

    try { 

     out = new PrintWriter(
      new BufferedWriter(new FileWriter(yourFileName, true))); 

     for (float i = 1.0F; i < 16; i += 0.1F) { 
      out.println(String.format("%.1f", i)); 
      if(i >= (((int)i) + 0.4)) 
      { 
       i += 0.5; 
      } 
     } 

    } finally { 
     if(out != null) 
     { 
      out.close(); 
     } 
    } 

} 
+0

此方法是否可缩放以生成字符串,如10.2.5.2,10.2.5.3 ... – evanlivingston 2011-04-18 01:35:36