嵌套循环语句Java

时间:2014-02-09 16:13:22

标签: java

我目前正在尝试使用java创建一个嵌套的Loop语句,如何使用java创建新的嵌套for Loop语句,它提供以下输出:

 8
    5 5 5 6 5 8 9 5 6 8 
    7 7 8 7 6 7 8 8 9 7
    8 7 6 7 8 7  5 6 8 7
    9 9 9 8 9 7 9  8 9 9
    7 8 8 7 8 7 8 9 6 8
    6 5 6 4 5 6 5 6 6 6
    7  8 7 7 6 8 7 8 6 6
    5 7 6 7 6 7 6 7 7 7

上述数字存储在名为data1.txt的文本文件中,但需要使用2D数组正确显示为整数,

以下是我对代码的尝试:

import java.util.*;
import java.io.*;
/**
 * class <code>ReadMarks</code> simulates storing student data in a collection.
 *
 * @author 
 * @version 09 Feburary 2014
 */
public class ReadMarks
{


    /**
     * Constructor for objects of class ReadMarks
     */
    public ReadMarks()
    {

    }

    /**
     * An example of a method - replace this comment with your own
     * 
     */
    public void readMarksData(String fileName) throws FileNotFoundException
   {
       File dataFile = new File(fileName);
      Scanner scanner = new Scanner(dataFile);

      while( scanner.hasNext() )
      {
         String info = scanner.nextLine();
         System.out.println(info);
      }
      scanner.close();
   }
   for (int i= 0; i <8; i++)
      for (int j=1; j<=i; j++)
         System.out.print(i*j + "\t");

}
for (int row=1; row<=10; row++)
   {   
      for (int col=1; col<=8; col++)
         System.out.print(row*col + "\t");
      System.out.println();
   }

任何答案或回复都将不胜感激

1 个答案:

答案 0 :(得分:0)

在您的代码中,您不会从文件中读取数字,只需读取整行并打印即可。如果你想阅读所有这些整数,你应该写下这样的东西:

List<Integer> ints = new LinkedList<>();
while (scanner.hasNextInt()) {
    ints.add(scanner.nextInt());
}

现在,ints变量保存从文件中顺序读取的所有整数。然后我们需要打印它们。正如你已经注意到的那样,你需要两个带嵌套的循环。但是,您假设有10行8列。如果没有怎么办?如果我们想重新格式化输出怎么办?我们宁愿设置列数,我们将根据需要打印多行:

int columnCount = 10;
for (int i = 0, l = ints.size(); i < l;) {
    for (int c = 0; c < columnCount; c++, i++) {
        System.out.printf("%3d", ints.get(i));
    }
    System.out.println();
}

现在您只需更改columnCount的值即可重新格式化输出。如果你需要将这个矩阵打印为正方形(这实际上不可能,因为int count不足以形成正方形),你可以计算{{1}中int数的平方根列出并比较它的平方与实际长度 - 如果这些值匹配,则意味着您可以将ints的值设置为int count的平方根,并且对于良好的方阵矩阵感到满意。