Java代码中的运行时错误;“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";

Java代码中的运行时错误;“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";,java,jxl,Java,Jxl,我在线程“main”java.lang.NumberFormatException中遇到此运行时错误**”异常:对于输入字符串:“**请帮助我解决此问题 以下是代码snipet: package SampleC; import java.io.File; import java.io.IOException; import java.util. *; import jxl.*; import jxl.read.biff.BiffException; import jxl.write.Wr

我在线程“main”java.lang.NumberFormatException中遇到此运行时错误
**”异常:对于输入字符串:“**
请帮助我解决此问题

以下是代码snipet:

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();
}  

        }
    }
}
package-SampleC;
导入java.io.File;
导入java.io.IOException;
导入java.util.*;
进口jxl。*;
导入jxl.read.biff.BiffException;
导入jxl.write.WriteException;
导入java.util.ArrayList;
导入java.util.Vector;
公开课考试{
publicstaticvoidmain(字符串args[])抛出IOException、BiffException、WriteException{
{
尝试
{
工作簿=工作簿.get工作簿(新文件(“C:\\Documents and Settings\\snandam\\Desktop\\readvalues.xls”);
工作表=工作簿。获取工作表(0);
//字符串[]s=新字符串[200];
int[]s=新的int[200];
单元格[][]单元格=新单元格[100][100];
ArrayList myList=新的ArrayList();
{
对于(inti=0;i有一段时间

cell[i][j].getContents()

返回一个空字符串。您应该仔细检查输入文件。也许可以通过打印您要分析的内容来调试它。另外,请编辑您的问题,使代码更具可读性。

在分析此行之前

s[i]=Integer.parseInt(cell[i][j].getContents());
检查s[i]是否有空字符串、空字符或任何字母或特殊字符


如果找不到上述字符,则可以对其进行分析。

我认为问题一定出在这一行:

s[i]=Integer.parseInt(cell[i][j].getContents());
…原因是
单元格[i][j].getContents()的返回值为非数字(可能为空)

正如@Tobiask指出的,调试构建中的堆栈跟踪应该包括问题的确切行号,但这是我看到的唯一的
parseInt

在您提出以下问题后更新

那么,这个??N单元格[i][j]的解决方案是什么呢?getContents()不是空的,因为存在数据及其特征。我想问题只存在于转换为int时,但我不确定

是的,异常情况是告诉您,
cell[i][j].getContents()返回的字符串包含被认为无效的字符。请注意,
parseInt
的文档中说:

字符串中的字符必须全部为十进制数字,但第一个字符可以是ASCII减号
'-'
'\u002D'
)以指示负值


例如,字符串开头的空格无效。空白字符串无效。使用调试器遍历代码,查看字符串中的内容(从您报告的异常情况来看,字符串似乎是空白的,但是…。

只需检查单元格[i][j]值是否等于null或空。如果单元格[i][j]!=null或空将值解析为int。然后处理异常。

请用行号发布整个stacktrace,在那里您会发现错误…Tobiask:行号是第47行,错误在代码的这一行s[i]=Integer.parseInt(单元格[i][j].getContents();True TJ您提到的那一行就是问题所在。行号是47。那么这个??N单元格[i][j]的解决方案是什么呢?getContents()不是空的,因为存在数据及其特征。我想问题只在转换为int时存在,但我不确定。Vincent我的输入文件有数据。我只有在尝试将其转换为int时才面临此问题。如果s[]是字符串,则没有问题。打印它。即使它有数据,也不兼容int。所以只需打印它即可。