簡體   English   中英

我的成績簿程序無法正確打印為Excel文檔

[英]My gradebook program doesn't print properly to excel document

當我的成績單程序(打印成績並查找平均數)時,它會打印到excel文檔中,但無法正常運行。 標題打印中只有學生1和平均值,而學生1的平均值低於0,沒有任何考試成績或其他任何內容。

這是我的代碼:

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++;


  }  
} 

}}

我究竟做錯了什么?

  • 將編寫塊放在循環之外,只需編寫一次即可。
  • 正如@ user902383所說的,您需要在outter循環中使用num++語句。
  • 您既不會在單元格中設置成績,也不會設置標題“ test N”。
  • 當您在單元格中將成績設置為@ user902383時,請將此值添加到total

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM