如何从Scanner中获取用户输入,并将其应用于同一包中的另一个类?

huangapple 未分类评论53阅读模式
标题翻译

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.

  1. Add 'private double radius;' in class Circle
  2. 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;
    }

}

huangapple
  • 本文由 发表于 2020年5月30日 13:48:14
  • 转载请务必保留本文链接:https://java.coder-hub.com/62098379.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定