У меня возникают проблемы с выяснением того, как правильно запросить у пользователя 3 входа, представляющих атрибуты, которые будут использоваться для создания объекта, который будет напечатан на экране, и чтобы убедиться, что входные данные не являются плохими значениями. Например, если пользователь ввел значение .5 в качестве диаметра, он изменится на 1. Предполагается, что конструктор перегрузки представляет имя файла, который будет содержать имя, диаметр и температуру создаваемого объекта.
Когда я пытаюсь запустить его, появляются ошибки для пропущенных символов. Как получить так, чтобы конструктор перегрузки со строкой в качестве единственного параметра вызывался в классе Object2 для создания объекта?
public class Object1
{
//attributes
private double yyy;
private int zzz;
private String xxx;
private String fileName;
//symbolic constants
private final double MINDIAMETER = 1;
private final int MINTEMP = 300;
private final String NA = "N/A";
// getter/setter methods for name
public void setName(String n)
{
if (n != "")
xxx = n;
else
xxx = NA;
}
public String getName()
{
return xxx;
}
// getter/setter methods for diameter
public void setDiameter(double d)
{
if (d >= MINDIAMETER)
yyy = d;
else
yyy = MINDIAMETER;
}
public double getDiameter()
{
return yyy;
}
// getter/setter methods for temperature
public void setTemp(int t)
{
if (t >= MINTEMP)
zzz = t;
else
zzz = MINTEMP;
}
public int getTemp()
{
return zzz;
}
public Object1()
{
xxx = NA;
yyy = MINDIAMETER;
zzz = MINTEMP;
}
public Object1(String n, double d, int t)
{
setName(n);
setDiameter(d);
setTemp(t);
}
public Object1(String f)
{
fileName = f; //Initialize the object's fileName with f
System.out.print("Enter the filename: ");
}
public String toString()
{
return "A object, named " + xxx + ", with a diameter of " + yyy + " miles, and a temperature of " + zzz + " Kelvin.";
}
}
Отдельный код файла
import java.util.Scanner;
import java.io.FileWriter;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileReader;
import java.io.IOException;
public class Object2
{
public static void main(String[] args) throws IOException
{
// object with overload
Object1 z;
z = new Object1("");
Scanner kb = new Scanner(System.in);
fileName = kb.nextLine();
File file = new File(fileName);
PrintWriter outputFile = new PrintWriter(file);
System.out.println("please enter name: ");
while (kb.hasNext())
{
name = kb.nextLine();
System.out.println("please enter the diameter: ");
diameter = kb.nextDouble();
System.out.println("please enter the temperature: ");
temp = kb.nextInt();
System.out.println(name + " " + diameter + " " + temp);
outputFile.println(name);
outputFile.println(diameter);
outputFile.println(temp);
}
outputFile.close();
System.out.println(z);
}
}