Java 为什么我的程序没有读取用户输入?
我要求用户输入半径编号,但 程序没有读取用户输入,我的意思是它会让 我把数字放进去,但不计算? 我不知道我哪里出错了 我把半径串起来,然后 radius=input.nextLine(); 我希望用户将其输入放在何处 但是当我运行它的时候,程序不会 计算用户输入。 请帮忙,谢谢Java 为什么我的程序没有读取用户输入?,java,Java,我要求用户输入半径编号,但 程序没有读取用户输入,我的意思是它会让 我把数字放进去,但不计算? 我不知道我哪里出错了 我把半径串起来,然后 radius=input.nextLine(); 我希望用户将其输入放在何处 但是当我运行它的时候,程序不会 计算用户输入。 请帮忙,谢谢 import javax.swing.JOptionPane; import java.util.Scanner; import java.util.*; import java.text
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
类应该有一个可以更改半径的成员函数。否则,你需要推迟创建圆,直到你有了半径。你是对的,这就是我的程序发生的事情。我只是遇到了一个问题,如何放置一个新的半径并运行它。我做到了,输出是相同的