2017-02-05 112 views
2

我试图从.ppm文件中提取数据并在图像上放置过滤器。 由于某些原因,当我打印图像的高度和宽度时,它会正确返回值,但是当我将数据放入二维数组时,它会返回高度与宽度相同,即使它不是。这是相关代码的一小部分。这与我初始化Color 2D数组有关吗?二维数组未被正确声明

Color[][] totalData = null; 
    int x = 0; 
    int y = 0; 

    while (fileScanner.hasNext()) { 
     // Handles comments 
     String line = fileScanner.nextLine(); 
     if ((line.startsWith("#"))) { 
      continue; 
     } 

     width = fileScanner.nextInt(); 
     height = fileScanner.nextInt(); 
     System.out.println(width); //4 
     System.out.println(height); //3 

     //Skips the Max color value 
     fileScanner.next(); 

     totalData = new Color[height][width]; 
     System.out.println(totalData[0].length); //4 
     System.out.println(totalData[1].length); //4 

回答

5

您正在打印数组的第一行和第二行的长度,并且都是4,因为那是2D数组的宽度。

要查看的高度和宽度(它们是不相同),则应该进行打印:

System.out.println(totalData.length); // the number of rows (3) 
System.out.println(totalData[0].length); // the length of each row (4) 
+0

所以第一维阵列不是由指数表示?另外,如果这是真的,那为什么totalData [1]会返回任何东西? –

+0

'totalData [1]'是你的二维数组的第二行。我不确定你在评论的第一部分提出的问题。 – Eran

+0

我明白你在说什么。那么我应该定义totalData 2D数组? –