标题翻译
How do I take an user input from Scanner in one class and then apply it to another class in the same package?
问题
例如
包 testcircle1;
import java.util.Scanner;
public class TestCircle1 {
public static void main(String[] args) {
System.out.println("欢迎!!!!");
Circle c1 = new Circle( );
Scanner in= new Scanner(System.in);
System.out.println("请输入一个数字");
c1.setRadius(in.nextDouble());
System.out.println(c1.getRadius());
}
}
包 testcircle1;
public class Circle {
public Circle() {
}
public Circle(double radius) {
}
public void setRadius(double radius) {
if (radius >= 0)
this.radius = radius;
}
public double getRadius() {
return radius;
}
}
我做错了什么?
英文翻译
For example
package testcircle1;
import java.util.Scanner;
public class TestCircle1 {
public static void main(String[] args) {
System.out.println("Welcome!!!!");
Circle c1 = new Circle( );
Scanner in= new Scanner(System.in);
System.out.println("Please enter a number");
c1.setRadius() = in.nextDouble();
System.out.println(c1.getRadius());
}
}
package testcircle1;
public class Circle {
public Circle() {
}
public Circle(double radius) {
}
public void setRadius(double radius) {
if (radius >= 0)
this.radius = radius;
}
public double getRadius() {
return radius;
}
}
What am I doing wrong?
答案1
得分: 0
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class TestCircle1 {
private static Logger logger = LoggerFactory.getLogger(TestCircle1.class);
public static void main(String[] args) {
System.out.println("欢迎!!!");
Circle c1 = new Circle();
try {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个数字");
if (!in.hasNextDouble()) {
throw new IllegalArgumentException("输入不是一个双精度值");
}
c1.setRadius(in.nextDouble());
System.out.println(c1.getRadius());
} catch (IllegalArgumentException e) {
logger.error(e.getMessage());
}
}
}
public class Circle {
private double radius;
public Circle() {
}
public Circle(double radius) {
}
public void setRadius(double radius) {
if (radius >= 0)
this.radius = radius;
}
public double getRadius() {
return radius;
}
}
英文翻译
You need to add below two.
- Add 'private double radius;' in class Circle
- In main method you need to use c1.setRadius(in.nextDouble())
providing code for the same
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class TestCircle1 {
private static Logger logger = LoggerFactory.getLogger(TestCircle1.class);
public static void main(String[] args) {
System.out.println("Welcome!!!!");
Circle c1 = new Circle();
try {
Scanner in = new Scanner(System.in);
System.out.println("Please enter a number");
if (!in.hasNextDouble()) {
throw new IllegalArgumentException("Input is not a double value");
}
c1.setRadius(in.nextDouble());
System.out.println(c1.getRadius());
} catch (IllegalArgumentException e) {
logger.error(e.getMessage());
}
}
}
public class Circle {
private double radius;
public Circle() {
}
public Circle(double radius) {
}
public void setRadius(double radius) {
if (radius >= 0)
this.radius = radius;
}
public double getRadius() {
return radius;
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论