package 第6周;
import javax.swing.*;
import java.util.*;
public class 圆 {
double r,R,S;
private void setr(double newr) {
if(r>0) {
newr=R/2;
r=newr;
}
else
r=0;
}
private double getr() {
return r;
}
private void setR(double newR) {
if(R>0)
{
newR=r*2;
R=newR;
}
else
R=0;
}
private double getR() {
return R;
}
private double getS() {
return 3.14*r*r;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
圆 acircle=new 圆();
acircle.setr(10);
acircle.setR(30);
System.out.print("圆的半径为:"+acircle.getr()+"\n"+"圆的直径为:"+acircle.getR());
}
}
这样改改
public class 圆 {
double r,R,S;
private void setr(double newr) {
if(r>0) {
r=newr;
R = 2*r;
}
else
r=0;
}
private double getr() {
return r;
}
private double getR() {
return R;
}
private double getS() {
return 3.14*R*R;
}
public static void main(String[] args) {
圆 acircle=new 圆();
acircle.setr(10);
System.out.print("圆的半径为:"+acircle.getr()+"\n"+"圆的直径为:"+acircle.getR() + "\n面积:" + acircle.getS());
}
}
所有的 set 方法错了,应该改成你传入的是,newR,但是你判断的是 if r > 0
JAVA语言入门到精通(QQ项目实训):https://edu.csdn.net/course/detail/2981
你的R在哪赋值的?没值啊;setr 方法 r = 0.0直接返回了。setR 方法 R = 0.0 返回了;0 / 任何数 = 0;
private void setr(double newr) {
if(r>0) { // 这里 直接过不去,double r 默认 0.0 判断失败else r = 0
newr=R/2; // 其次 就算上面的能过去,这里 double R 默认值 0.0 0 / 2 = 0;
r=newr;
}
else
r=0;
}
就拿其中一个方法举例子
private void setr(double newr) {
if(newr>0) {
newr=newr/2;
r=newr;
}
else
r=0;
}
private void setR(double newR) {
if(newR>0)
{
newR=newR*2;
R=newR;
}
else
R=0;
}
把你的这两个方法改成这样
private void setr(double newr) {
if (R > 0){
if (r * 2 != R){
System.out.println("半径错误");
}
}else{
r = newr;
R = r * 2;
}
}
private void setR(double newR) {
if (r > 0){
if (newR / 2 != r){
System.out.println("直径错误");
}
}else{
R = newR;
r = R / 2;
}
}
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632