为了账号安全,请及时绑定邮箱和手机立即绑定

如果想使用Scanner工具,我的代码如何继续优化?

//Shape父类
public abstract class Shape {
	public float a;
	public float b;
	public float r;

	public abstract void C();

	public abstract void S();

	public Shape(float a, float b, float r) {
		this.a = a;
		this.b = b;
		this.r = r;
	}

}
//矩形子类
public class Rectangle extends Shape {

	public void C() {
		System.out.println("矩形的周长为:"+(a+b)*2);
	}

	public void S() {
		System.out.println("矩形的面积为:"+a*b);

	}
	public Rectangle(float a,float b,float r) {
		super(a,b,r);
	}

}
//圆形子类
public class Circle extends Shape {


	public void C() {
		System.out.println("圆形的周长为:"+3.14*2*r);

	}

	public void S() {
		System.out.println("圆形的面积为:"+3.14*r*r);

	}
	public Circle(float a,float b,float r) {
		super(a,b,r);
	}

}
//输出
import java.util.Scanner;

public class Result {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入矩形的长度:");
		String z = input.next();
		System.out.println("请输入矩形的宽度:");
		String x = input.next();
		System.out.println("请输入圆形的半径:");
		String c = input.next();
		float a = Float.parseFloat(z);
		float b = Float.parseFloat(x);
		float r = Float.parseFloat(c);
		Shape rec = new Rectangle(a, b, r);
		Shape cir = new Circle(a, b, r);
		rec.C();
		rec.S();
		cir.C();
		cir.S();

	}

}


正在回答

4 回答

你的输入自己给复杂化了,输入直接double(建议)或者float 类型的就好啊,没必要输入String类型,再转化为float类型的。还有你设计的数据模型,建议在Rectangle中只设长和宽,Circle类中只设半径,没必要全设在父类中,还有构造函数建议在每个子类中进行重写,希望能对你有所帮助

1 回复 有任何疑惑可以回复我~

package com.imooc1;


public abstract class Shape {



public abstract void ZC();

public abstract void MJ();

}

package com.imooc1;


public class Rectangle extends Shape {

public double c ;

public double k ;

public Rectangle(double c, double k) {

// TODO Auto-generated constructor stub

this.c = c;

this.k = k;

}


@Override

public void ZC() {

// TODO Auto-generated method stub

System.out.println("矩形的周长是:"+(c+k)*2);

}


@Override

public void MJ() {

// TODO Auto-generated method stub

System.out.println("矩形的面积是:"+c*k);

}


}

package com.imooc1;


public class Circle extends Shape {

public double r ;

public Circle(double r) {

// TODO Auto-generated constructor stub

this.r = r;

}


@Override

public void ZC() {

// TODO Auto-generated method stub

System.out.println("圆的周长是:"+(2*3.14*r));

}


@Override

public void MJ() {

// TODO Auto-generated method stub

System.out.println("圆的面积是:"+(3.14*r*r));

}


}

package com.imooc1;

import java.util.Scanner;

public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

        System.out.println("请输入矩形的长度:");

        double c = Double.parseDouble(input.next());

        System.out.println("请输入矩形的宽度:");

        double k = Double.parseDouble(input.next());

        System.out.println("请输入圆形的半径:");

        double r = Double.parseDouble(input.next());

Shape test1 = new Rectangle(c,k);

Shape test2 = new Circle(r);

test1.ZC();

test1.MJ();

test2.ZC();

test2.MJ();

}


这是我写的代码   你先看看 有没有多余的 可以优化的地方啊

0 回复 有任何疑惑可以回复我~
//优化后的代码
//shape父类
public abstract class Shape {
	public abstract void C();

	public abstract void S();

}
//矩形子类
public class Rectangle extends Shape {
	Scanner input = new Scanner(System.in);
	double a = input.nextDouble();
	double b = input.nextDouble();

	public void C() {
		System.out.println("矩形的周长为:" + (a + b) * 2);
	}

	public void S() {
		System.out.println("矩形的面积为:" + a * b);

	}

}
//圆形子类
public class Circle extends Shape {
	Scanner input = new Scanner(System.in);
	double r = input.nextDouble();

	public void C() {
		System.out.println("圆形的周长为:" + Math.PI * 2 * r);

	}

	public void S() {
		System.out.println("圆形的面积为:" + Math.PI * r * r);

	}

}
//输出
public class Result {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String Circle = "圆形";
		String Rectangle = "矩形";
		System.out.println("请输入你想计算的多边形:");
		String q = input.next();
		if (q.equals(Rectangle)) {
			System.out.println("请输入矩形的长和宽:");
			Rectangle rec = new Rectangle();
			rec.C();
			rec.S();
		} else if(q.equals(Circle)){
			System.out.println("请输入圆形的半径:");
			Circle cir = new Circle();
			cir.C();
			cir.S();
		}
	}

}


1 回复 有任何疑惑可以回复我~

希望你能把优化后的代码 发一下,让我参考参考

0 回复 有任何疑惑可以回复我~
#1

不负旧时日 提问者

写在下面了 我也不确定优化的怎么样 不过比起之前的的确是优化了不少了=。= 如果你有更好的代码 也请让我参考参考
2017-08-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果想使用Scanner工具,我的代码如何继续优化?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信