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

Java 为什么我的程序没有读取用户输入?,java,Java,我要求用户输入半径编号,但 程序没有读取用户输入,我的意思是它会让 我把数字放进去,但不计算? 我不知道我哪里出错了 我把半径串起来,然后 radius=input.nextLine(); 我希望用户将其输入放在何处 但是当我运行它的时候,程序不会 计算用户输入。 请帮忙,谢谢 import javax.swing.JOptionPane; import java.util.Scanner; import java.util.*; import java.text

我要求用户输入半径编号,但 程序没有读取用户输入,我的意思是它会让 我把数字放进去,但不计算? 我不知道我哪里出错了

我把半径串起来,然后 radius=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());
    }
}

我直接看到一个问题。如果您需要两个半径,您可能希望同时存储它们,而不是用第二个半径覆盖第一个半径:

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.
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);
如果不这样做,您的圆将保持在初始化时使用的相同半径,可能是
4
5

对于更具体的代码,假设
Circle1
类确实有一个
setRadius(double)
成员函数,您可以使用如下内容:

circle1.setRadius(radius1); // after converting string to numeric of course.
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);

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

int status=
什么,确切地说?我只是在练习,无意中把它放了下来。你认为会发生什么?您似乎没有对用户输入做任何操作。我正在尝试输入两个数字why@David,你会得到两个数字。将第一个存储在
radius
中,然后将第二个存储在
radius
中,覆盖第一个。这并不重要,因为你从来没有使用过这些半径来影响圆:-)我怎样才能使用输入来影响圆呢program@David,请阅读我答案的第二部分。
Circle1
类应该有一个可以更改半径的成员函数。否则,你需要推迟创建圆,直到你有了半径。你是对的,这就是我的程序发生的事情。我只是遇到了一个问题,如何放置一个新的半径并运行它。我做到了,输出是相同的