第一句:BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
第二名:A=Integer.parseInt(a.readLine());
第三句:a.close();
1.为什么程序中有的要写第三句
2.为什么写完这三句,在a.readLine()就会出错,而一加上一个异常的处理,它就不会出错了
请指教
----------------解决方案--------------------------------------------------------
第一句:BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
第二名:A=Integer.parseInt(a.readLine());
第三句:a.close();
1.为什么程序中有的要写第三句
2.为什么写完这三句,在a.readLine()就会出错,而一加上一个异常的处理,它就不会出错了
请指教
1:
看看2个构造,1个说明
BufferedReader(Reader in)
InputStreamReader(InputStream in)
public static final InputStream in
BufferedReader构造时 需要 一个Reader对象
InputStreamReader 构造时需要一个 输入流 对象
而 System.in 的声明就是 一个输入流
所以
InputStreamReader is=new InputStreamReader(System.in);
BufferedReader bf=new BufferedReader(is);
这么写也可,不过太麻烦,因此写成了一行:
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
这样,BufferedReader应该在不使用的时候关掉,保证系统资源不会浪费
2:
public String readLine() throws IOException
在BufferedReader里,readLine方法声明,会抛异常,当然咱得捕获了,
其实要懒的话,你也可以在调用的地方抛异常,也就不报错了
[此贴子已经被作者于2006-6-27 10:17:59编辑过]
----------------解决方案--------------------------------------------------------
哦,呵呵,这样呀
我是初学者,还有好多东西不懂,以后还请多多帮忙呢
谢谢啦
----------------解决方案--------------------------------------------------------
import java.io.*;
public class Feibo
{
public static void main(String args[]) throws IOException
{ int n;
String str;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("input an integer:");
str=buf.readLine();
n=Integer.parseInt(str);
int s=f(n);
System.out.println(n);
}
public static int f(int i){
int f(0)=0,f(1)=1;
if(i==2) return f(0)+f(1);
else
return f(i-1)+f(i-2);
}
}
请问一下这个程序哪儿有问题?
----------------解决方案--------------------------------------------------------
import java.io.*;
public class feibo{
public static void main(String args[]) throws IOException
{
int n;
String str;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("input an integer:");
str=buf.readLine();
n=Integer.parseInt(str);
int s=f(n);
System.out.println(s);
}
public static int f(int n){
if(n==2)
return 1;
if(n==3)
return 2;
else return f(n-1)+f(n-2);
}
}
为什么这样却可以
----------------解决方案--------------------------------------------------------
import java.io.*;
public class Feibo
{
public static void main(String args[]) throws IOException
{ int n;
String str;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("input an integer:");
str=buf.readLine();
n=Integer.parseInt(str);
int s=f(n);
System.out.println(n);
}
public static int f(int i){
int f(0)=0,f(1)=1;
if(i==2) return f(0)+f(1);
else
return f(i-1)+f(i-2);
}
}
请问一下这个程序哪儿有问题?
为什么错?
int f(0)=0,f(1)=1; 你可以这么附值的吗?
----------------解决方案--------------------------------------------------------
可以这样子定义吗:
int s=f(3);
----------------解决方案--------------------------------------------------------
当然可以,但是不能把一个值赋给一个方法啊
----------------解决方案--------------------------------------------------------
这个是不是说把一个函数的返回值赋给S呀
如果改成:
int s=5;
f()=s;
这样是错的
----------------解决方案--------------------------------------------------------
当然是错的,赋值操作是把右边的值赋给左边
----------------解决方案--------------------------------------------------------