Java代码中的运行时错误;“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";
我在线程“main”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
**”异常:对于输入字符串:“**
请帮助我解决此问题
以下是代码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。所以只需打印它即可。