首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

待修改的java程序,该怎么处理

2012-01-06 
待修改的java程序麻烦各位帮我看看这个程序到底错在什么地方,具体思路是从键盘接收一个int型的数赋给num,p

待修改的java程序
麻烦各位帮我看看这个程序到底错在什么地方,具体思路是从键盘接收一个int型的数赋给num,p1调用jiech方法计算,代码如下:
import java.io.*;
public class People {
  public static void main(String args[]){
  int num;
  try{
  System.out.print("请输入一个数:");
  BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
  num=Integer.parseInt(input.readLine());
  }catch(IOException e){}
  People p1=new People();
  p1.jiech(num);
  }
  public void jiech(int i){  
  for(int j=1;j<=i;j++){
  for(int n=1;n<=j;n++){
  System.out.print(n+"*"+j+"="+n*j+" ");
  }
  System.out.println();  
  }  
  }
  }

[解决办法]
用Scanner实现吧,这个类更合适

Java code
import java.io.*;import java.util.Scanner;public class People {    public static void main(String args[]){        int num=0;        try{            System.out.print("请输入一个数:");//            BufferedReader input=new BufferedReader(new InputStreamReader(System.in));//            num=Integer.parseInt(input.readLine());            Scanner scanner=new Scanner(System.in);            num=scanner.nextInt();        }catch(Exception e){            e.printStackTrace();        }        People p1=new People();        p1.jiech(num);    }    public void jiech(int i){        for(int j=1;j<=i;j++){            for(int n=1;n<=j;n++){                System.out.print(n+"*"+j+"="+n*j+" ");            }            System.out.println();        }    }}
[解决办法]
探讨
还有,catch的地方“catch(IOException e){}”与“catch(Exception e){e.printStackTrace();}”
区别的哪里?为什么要改成“catch(Exception e){e.printStackTrace();}”?

[解决办法]
你上面的程序没有什么特别大的问题,只是int num;没有给出初始化的值 ,在一些编辑器不让编译通过,改成int num=0;

Scanner是JDK里面专门为扫描数据给出的一个类,配合System.in对象可以扫描控制台的输入,具体你可以查看JDK里面 Scanner的API


探讨
能解释一下吗?“Scanner(System.in)”这个方法具体的作用是什么?我上面的那个具体错在哪?

[解决办法]
楼主你的代码编译是有错,报:“可能尚未初始化变量 num”,你只要将num初始化
为0就行,其他逻辑部分没有错吧,至于采用什么方式输入,这个随便的。

至于为什么可能会导致num未被初始化,原因就是在使用IO进行输入时可能会有IOException,
故还未运行到num = Integer.xxx这一行程序就从try块跳到了catch块,所以,so……

热点排行