学园孤岛综漫同人小说:java当把字符串转换为数值型数据失败时产生的异常怎么班

来源:百度文库 编辑:高校问答 时间:2024/04/29 23:48:54
代码:

import java.io.*;

public class KsB1
{
public static void main( String args[]) throws IOException
{
String banji[], name[], chengji[];
String str;
int a[], b[];
int i, j, m=0,temp;
BufferedReader buf = new BufferedReader( new InputStreamReader( System.in));

FileWriter fw = new FileWriter("d:\\a.txt");
FileReader fr = new FileReader("d:\\a.txt");

for( i=0; ; i++)
{
System.out.print( "请输入班级:");
str = buf.readLine();
if( str.length() == 0)
break;
else
fw.write( str + "\r\n ");

System.out.print( "请输入姓名:");
str = buf.readLine();
fw.write( str + "\r\n ");

System.out.print( "请输入成绩:");
str = buf.readLine();
fw.write( str + "\r\n");
}

fw.close();

a = new int[i];
b = new int[i];

banji = new String[i];
name = new String[i];
chengji = new String[i];

//一下改写读文件了。
BufferedReader bf = new BufferedReader( fr);
while( (str = bf.readLine()) != null)
{

banji[m] = str;

str = bf.readLine();
name[m] = str;
str = bf.readLine();
chengji[m] = str;

m++;
}

//以下该写按成绩排序了。 错误代码,当把字符串转换为数值型数据失败时产生
for( i=0; i<m; i++)
{
str = chengji[i];
a[i] = Integer.parseInt( str);
System.out.print( a[m]);
}

for( i=0; i<m-1; i++)
{
for( j=i+1; j<m; j++)
{
if( a[i] > a[j])
{
temp = a[i] ;
a[i] = a[j];
a[j] = temp;
str = name[i];
name[i] = name[j];
name[j] = str;
str = banji[i];
banji[i] = banji[j];
banji[j] = str;
}
}
}

for( i=0; i<m; i++)
{
System.out.println( "班级"+banji[i]+" 姓名"+name[i]+" 成绩"+chengji[i]);
}

fr.close();

System.exit(0);
}
}

会抛出NumberFormatException的异常

不处理会终止程序 !

可以用try{ } catch(NumberFormatException e){ } 捕捉异常

产生异常会执行catch 代码块语句

代码:(添加了try...catch 语句)

//以下该写按成绩排序了。 错误代码,当把字符串转换为数值型数据失败时产生
for( i=0; i<m; i++)
{
str = chengji[i];
try{
a[i] = Integer.parseInt( str);
}
catch(NumberFormatException e){
//产生字符串转换为数值型数据失败时, 设为 0,再执行之后代码
a[i]=0;
}

System.out.print( a[m]);
}