为什么我的程序没有读取用户输入?

时间:2015-02-16 04:54:49

标签: java

我要求用户输入一个半径数,但是 程序没有读取用户输入我的意思是它会让 我把数字但不接受并计算? 我不知道我犯了什么错误?

我把半径串起来然后放了 半径= input.nextLine(); 我希望用户输入他/她的地方 但是当我运行它时,程序却没有 计算用户输入。  请帮助谢谢。

    import javax.swing.JOptionPane;
    import java.util.Scanner;
    import java.util.*;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    public class TComparable  
{
    private double radius;

    public static void main(String[] args) 
    {
        Scanner input= new Scanner(System.in);
        int option;
        String radius;

        option = JOptionPane.YES_NO_OPTION;
        while(option == JOptionPane.YES_OPTION)
        {    
            // Declare and initialize two geometric objects
            Circle1 circle1 = new Circle1(5);
            Circle1 circle2 = new Circle1(4);

            System.out.println("What is the radius of the two circle:");

            radius=input.nextLine();
            radius=input.nextLine();


            Circle1 circle = (Circle1)GeometricObject1.max(circle1, circle2);
            System.out.println("The max circle's radius is " + circle.getRadius());

            System.out.println(circle);
            System.out.println("The two objects have the same area? " +
                equalArea(circle1,circle2));

            displayGeometricObject(circle1);

            displayGeometricObject(circle2);
            option = JOptionPane.showConfirmDialog( null, "Would you like to continue?");
        }

    }

    public static boolean equalArea(GeometricObject1 object1,
    GeometricObject1 object2) 
    {
        return object1.findArea() == object2.findArea();
    }

    public static void displayGeometricObject(GeometricObject1 object) 
    {
        System.out.println();
        System.out.println("The area is " + object.findArea());
        System.out.println("The perimeter is " + object.findPerimeter());
    }
}

2 个答案:

答案 0 :(得分:0)

我直接看到一个问题。如果你要求两个半径,你可能想要存储它们而不是用第二个覆盖第一个:

System.out.println("What is the radius of the two circle:");
radius=input.nextLine();
radius=input.nextLine();

而且,虽然您输入半径,但我看不到基于这些半径影响圆圈的代码。我希望看到类似的东西:

circle1.setRadius(radius1); // after converting string to numeric of course.

如果没有它,您的圈子将保持与初始化时相同的半径,大概是45

就更具体的代码而言,假设Circle1 具有setRadius(double)成员函数,您可以使用以下内容:

System.out.println("What is the radius of the two circle:");

radius = input.nextDouble(); // may want to catch exception
circle1.setRadius(radius);

radius = input.nextDouble(); // ditto
circle2.setRadius(radius);

答案 1 :(得分:0)

这可能是由于input.nextLine()被调用两次,跳过第一个输入。相反,将input.nextLine()分配给另一个变量,而不是再次设置radius。