2013-03-25 64 views
0

我有这个Java程序应该显示三角形,梯形和六角形的几何形状的边数。我设法创建了这样的代码,当我运行java Shape时,它会同时显示所有形状和边,但我希望使它交互,以便可以提示用户输入她想要的形状,并返回它的边数,Java的哪些功能最能做到这一点?Java程序,以交互方式显示几何图形中的形状数量

public abstract class Shape { 

    public abstract void numberOfSides(); 

    public static void main(String[] args) 
    { 
     System.out.println("The Geometrical characteristics of the figures are as follows"); 

     Trapezoid t=new Trapezoid(); 
     Triangle tg=new Triangle(); 
     Hexagon h=new Hexagon(); 
     t.numberOfSides(); 
     tg.numberOfSides(); 
     h.numberOfSides(); 
    } 
} 
class Trapezoid extends Shape { 
    public void numberOfSides() 
    { 
     System.out.println("Trapezoid~It is geometrical figure with an attribute of 4 sides (Of which two are parallel and with no angles)"); 
    } 
} 
class Triangle extends Shape { 
    public void numberOfSides() 
    { 
     System.out.println("Triangle~It is geometrical figure with an attribute of 3 sides"); 
    } 
} 
class Hexagon extends Shape { 
    public void numberOfSides() 
    { 
     System.out.println("Hexagon-It is geometrical figure with an attribute of 6 sides"); 
    } 
} 

这是我的新线试图实现以上,其称存在错误,过时的方法以后。

import java.io.*; 
public abstract class Shape { 

    public abstract void numberOfSides(); 

    public static void main(String[] args) 
    { 
     System.out.println("Enter the name of the Shape"); 
     BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); 
     try { 
     String shapeName = br.readLine(); 

     if (br.equals ("Trapezoid")) 
       {Trapezoid t = new Trapezoid(); 
       t.numberOfSides(); 
       } 
     else if (br.equals ("Triangle"))  
       {Triangle tg = new Triangle(); 
       tg.numberOfSides(); 
       } 
     else if (br.equals ("Hexagon")) 
       {Hexagon h = new Hexagon(); 
       h.numberOfSides(); 
       } 
       }  
} 
class Trapezoid extends Shape { 
    public void numberOfSides() 
{ 
     System.out.println("Trapezoid~It is geometrical figure with an attribute of 4 sides (Of which two are parallel and with no angles)"); 
} 
} 
class Triangle extends Shape { 
    public void numberOfSides() 
{ 
     System.out.println("Triangle~It is geometrical figure with an attribute of 3 sides"); 
} 
} 
class Hexagon extends Shape { 
    public void numberOfSides() 
{ 
     System.out.println("Hexagon-It is geometrical figure with an attribute of 6 sides"); 
} 
} 

回答

1

来读取你将要使用的缓冲阅读器的用户输入。然后,您需要根据用户输入条件调用您的方法。

ex。

System.out.println("Enter the name of the shape"); 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String shapeName = br.readLine(); 

if(br.equals("Trapezoid") { 
    Trapezoid t = new Trapezoid(); 
    t.numberOfSides(); 
} 
//... 

一旦你写了代码,你可以实现一个菜单供用户选择他们想要的形状。代码看起来像这样。

System.out.println("Select one of the following shapes. \n 1) Trapezoid \n 2) Triangle \n 3) Hexagon"); 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String shapeName = br.readLine(); 

if(br.equals("Trapezoid" || br.equals("1") { 
    Trapezoid t = new Trapezoid(); 
    t.numberOfSides(); 
} 
// ... 
+0

@EsotericNonsence上面的mehod产生一个错误,显示使用obdolete方法,为什么会这样呢? – 2013-03-25 23:05:57

+0

如果你告诉我它说的过时的方法,我会更容易告诉你这意味着什么。你的代码是否编译并运行? – EsotericNonsense 2013-03-26 02:42:07

+0

我hava把已编译的新代码,但拒绝有效运行,因为我提到的错误,它没有明确指出错误。 – 2013-03-26 11:50:20