簡體   English   中英

為什么我的程序沒有讀取用戶輸入?

[英]Why is my program not reading the user input?

我要求用戶輸入一個半徑數,但程序沒有讀取用戶輸入我的意思是它會讓我把數字但不接受並計算? 我不知道我犯了什么錯誤?

我把半徑串起來,我把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.

如果沒有這個,你的圈子將保持與初始化時相同的半徑,大概是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);

這可能是由於input.nextLine()被調用兩次,跳過第一個輸入。 而是將input.nextLine()分配給另一個變量,而不是再次設置radius。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM