java程序的一点小毛病

importjava.io.*;classS{doubler1;doublep=3.14;staticvoidarea(doubler1){doublearea=p*r1... import java.io.*;
class S
{
double r1;
double p=3.14;
static void area(double r1)
{
double area=p*r1*r1;
System.out.println("area:"+area);
}
}
public class chu
{
public static void main(String[] args)
{
System.out.println("请输入r1=");
double r1;
r1=System.in.read();
S.area(r1);
}
}
我是刚学的Java 自己就编了一个求圆面积的小程序 但是不知错哪去了 还望高手指点啊!!
展开
 我来答
zhujiapo
2009-12-07 · TA获得超过185个赞
知道答主
回答量:289
采纳率:0%
帮助的人:197万
展开全部
我调试了一下问题有三个:

第一:就是p那里,静态方法里不能引用非静态的变量所以要把p声明为静态的 static double p=3.14

第二:r1=System.in.read(),这句话会抛IOException,你没有加try catch语句改成
try {
r1=System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
也就是在外面套一层try catch 语句

第三:mian里面的r1没有赋初值 改成double r1= 0;

还有一个问题就是,如果按照你这个程序不做大的修改的话,
你在调用S.area(r1)时得把r1减去48,即S.area(r1-48)这样才能得到你想要的结果

原因:read方法把你的输入当做字符型的。所以你输入一个1,系统把他当做字符1,转换成int型时,就把1的ascci码返回了,相当于加了48,就变成49了,你就得不到正确的结果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随疯KING
2009-12-07 · TA获得超过357个赞
知道小有建树答主
回答量:686
采纳率:0%
帮助的人:336万
展开全部
你没有导入java标准输入类,要先创建标准输入类实例。在通过他输入半径
你的半径也应该是静态的变量啥,不然静态方法中不能调用、

例如:
import java.util.Scanner;

public class Test {

public static double PI = 3.14;
public static void area(double r1) {
double area = PI * (r1 * r1);
System.out.println("area:" + area);
}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.println("请输入r1=");
double r = sc.nextDouble();

Test.area(r);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友16ee7ec98
2009-12-07 · TA获得超过1117个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:395万
展开全部
你的第一个class S应该编译都通不过的,你的area方法是static的,static方法中是不能调用非static属性的建议你可以把area方法的static去掉
然后在chu类的最后一行改成(new S()).area(r1);就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
la5zxf
2009-12-07
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
static void area(double r1)
{
double area=p*r1*r1;
System.out.println("area:"+area);
}
自己定义的变量r1有从形参得到值么?
形参没有把值赋给自己的成员变量r1
请检查ing...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-12-07
展开全部
4楼正解!

参考资料: 张孝祥

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式