Как найти максимальное значение в столбце листа Excel, используя Java?

Изображение отображает мой набор данных

Я хочу найти максимальное значение в первом столбце, но код ниже показывает ошибку.

Bus1.java:52: ошибка: недопустимые типы операндов для двоичного оператора '>=' if(numbusarray.get(row)>=max); ^ первый тип: строка второй тип: int Bus1.java:53: ошибка: несовместимые типы: строка не может быть преобразована в int max=numbusarray.get(row);

import java.io.FileInputStream;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.*;
import java.util.*;

public class Bus1{

List<String> numbusarray = new ArrayList<String>();
List<String> numcommutersarray = new ArrayList<String>();
List<String> numcommercialarray = new ArrayList<String>();

public void readExcel() throws BiffException, IOException//method to read       contents form excel
{
    String FilePath = "Bus1.xls";
    Scanner sc = new Scanner(System.in);
    int max=0;

    FileInputStream fs = new FileInputStream(FilePath);
    Workbook wb = Workbook.getWorkbook(fs);
    Sheet sh = wb.getSheet("Bus1");// TO get the access to the sheet
    int totalNoOfRows = sh.getRows();// To get the number of rows present in  sheet
    int totalNoOfCols = sh.getColumns();// To get the number of columns present in sheet

    //adding excel contents from every column to arraylist

    for (int row = 1; row < totalNoOfRows; row++)
    {
        numcommutersarray.add(sh.getCell(3, row).getContents());
    }

    for (int row = 1; row < totalNoOfRows; row++)
    {
        numcommercialarray.add(sh.getCell(5, row).getContents());
    }

    for (int row = 1; row < totalNoOfRows; row++)
    {
        if(numbusarray.get(row)>=max);
        max=numbusarray.get(row);

    }
    System.out.println(max);

    Iterator itr=numbusarray.iterator(); //to print arraylist demo 
    while(itr.hasNext()){  
        System.out.println(itr.next());  
    }
    }//end of method to read contents from excel

    public static void main(String args[]) throws BiffException, IOException  //main class
    {
        Bus1 DT = new Bus1();
        DT.readExcel();
    }//end of main class

}

1 ответ

Решение

Ваш numbusarray содержит строки, и вы пытаетесь сравнить строку с int. Сначала вы должны преобразовать в int следующим образом:

int intNumber = Integer.parseInt(YourString);

И всегда убедитесь, что ваша String может быть преобразована в int, иначе это вызовет NumberFormatException, вы также можете вывести содержимое numbusarray для проверки.

Хотя иногда Java может помочь вам конвертировать типы, но для начинающих лучше явно конвертировать типы, и я считаю, что это сэкономит вам много времени.

Для добавления вещей в список вы должны поместить в него объекты соответствующего типа. Это то, что ваш

List<String> numcommutersarray

хочет, он содержит объекты типа String.

Другие вопросы по тегам