Ошибка выполнения в коде Java «Исключение в потоке» main «java.lang.NumberFormatException: для входной строки:» - PullRequest
0 голосов
/ 10 мая 2011

Я сталкиваюсь с этой ошибкой во время выполнения **"Exception in thread "main" java.lang.NumberFormatException: For input string: "" "** Пожалуйста, помогите мне преодолеть это.

Вот фрагмент кода:

package SampleC;
import java.io.File;
import java.io.IOException;
import java.util. *;


import jxl.*;
import jxl.read.biff.BiffException;


import jxl.write.WriteException;

import java.util.ArrayList;
import java.util.Vector;

public class Test {
    public static void main(String args[])throws IOException, BiffException, WriteException {
    {
        try
        {
        Workbook workbook=Workbook.getWorkbook(new File("C:\\Documents and Settings\\snandam\\Desktop\\readvalues.xls"));

         Sheet sheet =workbook.getSheet(0);
    // String[] s=new String[200];
         int[] s = new int [200];
         Cell[][] cell=new Cell[100][100];

         ArrayList<Integer> myList = new ArrayList<Integer>();
         {


         for(int i=0;i<sheet.getColumns();i++)
         {
             for(int j=0;j<sheet.getRows(); j++)
             {
             cell[i][j] = sheet.getCell(i, j);

             s[i]=Integer.parseInt(cell[i][j].getContents());

           //  System.out.printf("%s\n", s[i]);
             Collections.addAll(myList, s[i]); 


             } 



      }


      ArrayList<Integer> a1 = new ArrayList<Integer>();
      a1.add(3);a1.add(-3);a1.add(-8);a1.add(0);

      ArrayList<Integer> a2 = new ArrayList<Integer>();
      a2.add(-1);a2.add(-4);a2.add(-7);a2.add(6);

      ArrayList<Integer> a3 = new ArrayList<Integer>();
      a3.add(1);a3.add(5);a3.add(6);a3.add(7);

      ArrayList<Integer> a4 = new ArrayList<Integer>();
      a4.add(-10);a4.add(-4);a4.add(-1);a4.add(3);a4.add(8);

      ArrayList<Integer> a5 = new ArrayList<Integer>();
      a5.add(17);a5.add(18);a5.add(19);a5.add(20);a5.add(21);a5.add(22);a5.add(23);a5.add(24);

      int target = 0;

      Vector<ArrayList<Integer>> vecOfLst   = new Vector<ArrayList<Integer>>();
      vecOfLst.add(myList);
      vecOfLst.add(a1);
      vecOfLst.add(a2);
      GlobalMembers gMem    = new GlobalMembers();
      gMem.findtarget(target, vecOfLst, 3);
      vecOfLst.add(a3);
      vecOfLst.add(a4);
      vecOfLst.add(a5);
      gMem.findtarget(target, vecOfLst, 6);
    }
} catch (BiffException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}  

        }
    }
}

Ответы [ 4 ]

1 голос
/ 10 мая 2011

Я предполагаю, что проблема должна быть в этой строке:

s[i]=Integer.parseInt(cell[i][j].getContents());

... вызвано тем, что возвращаемое значение cell[i][j].getContents() не является числовым (возможно, пустым).

Как@Tobiask указывает, что трассировка стека в отладочной сборке должна включать точный номер строки проблемы, но это был единственный parseInt, который я видел.

Обновление после вашего вопроса ниже:

Так, каково решение для этого ??N ячейка [i] [j] .getContents () не пуста, так как данные присутствуют и их выделение. Я думаю, что проблема существует только при преобразовании в int, но тогда я не уверен.

Да, исключение говорит вам, что строка, возвращаемая cell[i][j].getContents(), содержит символы, которые parseInt считает недействительными.Обратите внимание, что документы для parseInt говорят:

Все символы в строке должны быть десятичными цифрами, за исключением того, что первый символ может быть знаком минус ASCII '-' ('\u002D') дляуказать отрицательное значение.

Так, например, пробел в начале строки недопустим.Пустая строка недопустима.Пройдите по коду с помощью отладчика и посмотрите, что в строке (из исключений, о которых вы сообщили, строка будет пустой, но ...).

0 голосов
/ 10 мая 2011

Просто проверьте, что значение ячейки [i] [j] равно нулю или пусто.Если cell [i] [j]! = Null или empty, проанализируйте значение int.Затем обработайте исключение.

0 голосов
/ 10 мая 2011

До разбора этой строки

s[i]=Integer.parseInt(cell[i][j].getContents());

проверьте s [i] на наличие пустой строки, нуля или любых буквенных или специальных символов.

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

0 голосов
/ 10 мая 2011

Есть время, когда

cell[i][j].getContents()

возвращает пустую строку.Вы должны тщательно проверить свой входной файл.Может быть, отладка, печатая то, что вы пытаетесь разобрать.Кроме того, отредактируйте свой вопрос, чтобы код был более читабельным.

...