当前位置: 技术问答>java相关
初学java ,帮我看看错在什么地方?如何改?thx
来源: 互联网 发布时间:2015-10-11
本文导语: import java.lang.*; public class testInput { public static void main(String args[]) { String s1,s2; boolean flag=true; InputStreamReader stdin = new InputStreamReader(System.in);//键盘输入 BufferedReader bufin = ...
import java.lang.*;
public class testInput
{
public static void main(String args[])
{
String s1,s2;
boolean flag=true;
InputStreamReader stdin = new InputStreamReader(System.in);//键盘输入
BufferedReader bufin = new BufferedReader(stdin);
try
{
System.out.print ("请输入第一个浮点数: ");
s1 = bufin.readLine();
float f1=Float.parseFloat(s1);
System.out.print ("请输入第一个浮点数: ");
s2 = bufin.readLine();
float f2=Float.parseFloat(s2);
}
catch (IOException E)
{
flag=false;
System.out.println("发生I/O错误!!!");
}
if (flag=true) {
System.out.println(f1+f2);
}
}
}
错误信息:
--------------------Configuration: j2sdk1.4.0 --------------------
D:My DocumentsjavaworktestInput.java:27: cannot resolve symbol
symbol : variable f1
location: class testInput
System.out.println(f1+f2);
^
D:My DocumentsjavaworktestInput.java:27: cannot resolve symbol
symbol : variable f2
location: class testInput
System.out.println(f1+f2);
^
2 errors
Process completed.
如何改?
谢谢
public class testInput
{
public static void main(String args[])
{
String s1,s2;
boolean flag=true;
InputStreamReader stdin = new InputStreamReader(System.in);//键盘输入
BufferedReader bufin = new BufferedReader(stdin);
try
{
System.out.print ("请输入第一个浮点数: ");
s1 = bufin.readLine();
float f1=Float.parseFloat(s1);
System.out.print ("请输入第一个浮点数: ");
s2 = bufin.readLine();
float f2=Float.parseFloat(s2);
}
catch (IOException E)
{
flag=false;
System.out.println("发生I/O错误!!!");
}
if (flag=true) {
System.out.println(f1+f2);
}
}
}
错误信息:
--------------------Configuration: j2sdk1.4.0 --------------------
D:My DocumentsjavaworktestInput.java:27: cannot resolve symbol
symbol : variable f1
location: class testInput
System.out.println(f1+f2);
^
D:My DocumentsjavaworktestInput.java:27: cannot resolve symbol
symbol : variable f2
location: class testInput
System.out.println(f1+f2);
^
2 errors
Process completed.
如何改?
谢谢
|
//如果想在两个括号里使用,必须定义在这个地方
try{
这里面的变量生存周期只在括号里面
}catch(){
这里已经过了生存周期了
}
|
两个地方,java.lang.*不用特别声明import
你要import java.io.*;
你的f1,f2在try里定义,生命期到try结束就没了。
把f1,f2的声明拿到try外边,或把System.out.println(f1+f2);搞到try里边
你要import java.io.*;
你的f1,f2在try里定义,生命期到try结束就没了。
把f1,f2的声明拿到try外边,或把System.out.println(f1+f2);搞到try里边
|
楼上的已经说得很清楚了。
首先,任何一个java文件,都会自动包含java.lang的,如果你的程序用到了标准输入输出(System.out.println...),你只要import java.io.*就可以了。
你的程序之所以编译不过,是因为你没有弄清局部变量和全局变量。
局部变量和全局变量的生存期不同,你在try里边定义f1,f2,是定义了两个局部变量,在try完以后,f1,f2也就没了,这样在进入catch以后,f1,f2等于你没有定义。按照你这个程序实现的功能,你应该把f1,f2放在try外边,和String s1,s2一起定义成全局变量。
首先,任何一个java文件,都会自动包含java.lang的,如果你的程序用到了标准输入输出(System.out.println...),你只要import java.io.*就可以了。
你的程序之所以编译不过,是因为你没有弄清局部变量和全局变量。
局部变量和全局变量的生存期不同,你在try里边定义f1,f2,是定义了两个局部变量,在try完以后,f1,f2也就没了,这样在进入catch以后,f1,f2等于你没有定义。按照你这个程序实现的功能,你应该把f1,f2放在try外边,和String s1,s2一起定义成全局变量。
|
float f1=Float.parseFloat(s1);
float f2=Float.parseFloat(s2);
是在try{}中定义的,try{}一结束,它们的生存期也就结束了。只要把它们放在适当的地方定义就可以了,比如:
String s1,s2;
float f1,f2;
后边写成
f1=Float.parseFloat(s1);
f2=Float.parseFloat(s2);
float f2=Float.parseFloat(s2);
是在try{}中定义的,try{}一结束,它们的生存期也就结束了。只要把它们放在适当的地方定义就可以了,比如:
String s1,s2;
float f1,f2;
后边写成
f1=Float.parseFloat(s1);
f2=Float.parseFloat(s2);