简体   繁体   中英

My gradebook program doesn't print properly to excel document

My grade book program (where we put in grades and find the average) is not properly working when it prints out to excel document. Only Student 1 and average in the header print and under the average for student 1 is 0 with no test grades or anything.

Here is my code:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class array {


public static final String Dabook = "wording.xls";



@SuppressWarnings("unused")
public static void main(String[] args) throws IOException {

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("wording.xls")); 
HSSFSheet sheet = wb.getSheet("Sheet1");

    int col = 0, num = 1;
    Row startRow = sheet.createRow(0);
    Cell startCell = startRow.createCell(0);
    int cellNumber = 0;
    double total = 0;

    double [ ] [ ] gridGrades = 
        { { 87.5, 61.0, 70.5 },
          { 90.0, 88.5, 87.5 },
          { 78.0, 65.5, 70.5 },
          { 80.0, 79.0, 81.5 },
          { 60.5, 55.5, 50.0 } };
    for (int colTest = 0; colTest < gridGrades[colTest].length + 1; colTest++) {
        for (int testNum = 0; testNum < gridGrades[colTest].length + 1;testNum++) {

            if (testNum == 1) {
                startCell.setCellValue("");
            }
        if (testNum == gridGrades[0].length) {
            startCell = startRow.createCell(testNum + 1);
            startCell.setCellValue("Average");
            startCell = startRow.createCell(testNum + 2);

        }
    }
    }
for (double grade[] : gridGrades) {
    startRow = sheet.createRow(num);
    startCell = startRow.createCell(cellNumber);
    startCell.setCellValue("Student " + num);

    for (int poop = 0; poop < gridGrades[num - 1].length; poop++) {
        if (poop == gridGrades[0].length - 1) {
            double average = total / gridGrades[num - 1].length;

            startCell = startRow.createCell(poop + 2);
            DecimalFormat df = new DecimalFormat("###.##");
            Double averageDouble = Double.parseDouble(df
                    .format(average));
            startCell.setCellValue(averageDouble);
            startCell = startRow.createCell(poop + 3);

            total = 0;
        }
        for (int Scott = 0; startRow.getCell(Scott) != null; Scott++) {
            sheet.autoSizeColumn(Scott);
        }

        FileOutputStream output = new FileOutputStream("wording.xls");
        wb.write(output);
        output.close();
    }

}
{       
        System.out.printf("                 Test %d:      Test %d:   Test %d:    Average:%n", num, num+1, num+2);
    for(double[] grade : gridGrades) { 
        double average = (grade[col] + grade[col+1] + grade[col+2])/3;
    System.out.printf("Student %d         %.2f        %.2f     %.2f       %.2f  %n", num, grade[col], grade[col+1], grade[col+2], average);
    num++;


  }  
} 

} }

What am I doing Wrong?

  • Put the writing block out of the loop, you only need to write it once.
  • as @user902383 said you need a num++ statement in the outter loop.
  • you never set the grades in the cells, nor the headers "test N".
  • when you set the grade in the cells, as @user902383, add this value to total .

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM