gpt4 book ai didi

java - 如何将用户定义的数据类型中的值插入到java中的对象中?

转载 作者:行者123 更新时间:2023-12-01 16:35:12 24 4
gpt4 key购买 nike

我正在创建一个 Lightmode 类型的对象,它是一个类。还有一个 Smartlamp 类,它有一个类型为 Lighmodes 的自定义数据变量,我想在那里显示我定义的数据类型值。我正在尝试创建一个对象,然后针对显示错误的 Lightmode 数据类型插入一个字符串。我想这样打印:名称:灯1地点:3.1已开启: false模式:标准这里的模式是 lightmode 数据类型,我遇到了一个问题。...

public class LightModes
{
String NIGHT_MODE;
String SOFT_MODE;
String STANDARD_MODE;

public String getNIGHT_MODE() {
return NIGHT_MODE;
}

public void setNIGHT_MODE(String NIGHT_MODE) {
this.NIGHT_MODE = NIGHT_MODE;
}

public String getSOFT_MODE() {
return SOFT_MODE;
}

public void setSOFT_MODE(String SOFT_MODE) {
this.SOFT_MODE = SOFT_MODE;
}

public String getSTANDARD_MODE() {
return STANDARD_MODE;
}

public void setSTANDARD_MODE(String STANDARD_MODE) {
this.STANDARD_MODE = STANDARD_MODE;
}

public LightModes() {
this.NIGHT_MODE = "NIGHT";
this.STANDARD_MODE = "STANDARD";
this.SOFT_MODE = "SOFT";
}



}...

...package smart.home.app;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;


public class Step5 {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int size,mode;
int displayindex=1;
String name;
double location,temperature;
boolean status=false;
System.out.println("Enter number of size of Fridge you want to add.");
Scanner in = new Scanner(System.in);
size=in.nextInt();
// TODO code application logic here
SmartLamp[] smartLamp=new SmartLamp[size];// creating an array object of smartdevice class

//
for(int j=0;j<size;j++)
{

System.out.println("Enter Lamp name.");
name=input.readLine();
System.out.println("Enter Lamp Location.\\hint(1.1)");
Scanner devicelocation=new Scanner(System.in);
location=devicelocation.nextDouble();
System.out.println("Enter Lamp Mode.(1 for Night 2 for Soft 3 for Standard)");
Scanner lampmode=new Scanner(System.in);
mode=lampmode.nextInt();
System.out.println("Enter Lamp status.1 for ON, 0 for OFF.");
Scanner devicestatus=new Scanner(System.in);
int currentstatus=devicestatus.nextInt();
if(currentstatus==1)
{
status=true;
}
else if(currentstatus==0)
{
status=false;
}
LightModes light = null;
smartLamp[j]=new SmartLamp(light.NIGHT_MODE, name, location, status);

}


//////////////Display Data////////////////////////////
for(int i=0;i<size;i++)
{
System.out.println("-Smart lamp "+displayindex+" -");
System.out.println(smartLamp[i].toString());
System.out.println("---------------------------------------------");
displayindex++;
}
}
}...



...public class SmartLamp extends SmartDevice{
private LightModes lightModes;

public LightModes getLightModes() {
return lightModes;
}

public void setLightModes(LightModes lightModes) {
this.lightModes = lightModes;
}
public SmartLamp(String name, double location, boolean switchedOn) {
super(name, location, switchedOn);
}

public SmartLamp(LightModes lightModes, String name, double location, boolean switchedOn) {
super(name, location, switchedOn);
this.lightModes = lightModes;
}
@Override
public String toString() {
return "SmartLamp{"+"\nName."+getName()+"\nLocation."
+getLocation() + "\nSwitchedOn."+isSwitchedOn()+
"\nMode=" + getLightModes() + '}';
}

}...

最佳答案

我下载了您的代码并添加了缺少的类SmartDevice。您的代码包含两个编译器错误。

  1. name = input.readLine();
    此行抛出 java.io.IOException,这是一个未经检查的异常,因此必须由您的代码处理。有多种方法可以实现此目的,其中之一是将 throws IOException 添加到类 Step5 中的方法 main()
  2. smartLamp[j]=new SmartLamp(light.NIGHT_MODE, 名称, 位置, 状态);
    SmartLamp 构造函数的第一个参数是类 LightModes 的实例,但您传递的是 String。您需要创建 LightModes 的实例。

这是您的代码,经过我的修改,消除了两个编译器错误。
(注意:下面的代码包括我猜测的 SmartDevice 类的实现。)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Step5 {

public static void main(String[] args) throws IOException { // Change here.
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int size, mode;
int displayindex = 1;
String name;
double location, temperature;
boolean status = false;
System.out.println("Enter number of size of Fridge you want to add.");
Scanner in = new Scanner(System.in);
size = in.nextInt();
SmartLamp[] smartLamp = new SmartLamp[size];// creating an array object of smartdevice class

for (int j = 0; j < size; j++) {
System.out.println("Enter Lamp name.");
name = input.readLine(); // throws java.io.IOException
System.out.println("Enter Lamp Location.\\hint(1.1)");
Scanner devicelocation = new Scanner(System.in);
location = devicelocation.nextDouble();
System.out.println("Enter Lamp Mode.(1 for Night 2 for Soft 3 for Standard)");
Scanner lampmode = new Scanner(System.in);
mode = lampmode.nextInt();
System.out.println("Enter Lamp status.1 for ON, 0 for OFF.");
Scanner devicestatus = new Scanner(System.in);
int currentstatus = devicestatus.nextInt();
if (currentstatus == 1) {
status = true;
}
else if (currentstatus == 0) {
status = false;
}
LightModes light = new LightModes(); // Change here.
light.setNIGHT_MODE(light.getNIGHT_MODE()); // Change here.
smartLamp[j] = new SmartLamp(light, name, location, status); // Change here.
}

//////////////Display Data////////////////////////////
for(int i=0;i<size;i++)
{
System.out.println("-Smart lamp "+displayindex+" -");
System.out.println(smartLamp[i].toString());
System.out.println("---------------------------------------------");
displayindex++;
}
}
}

class LightModes {
String NIGHT_MODE;
String SOFT_MODE;
String STANDARD_MODE;

public String getNIGHT_MODE() {
return NIGHT_MODE;
}

public void setNIGHT_MODE(String NIGHT_MODE) {
this.NIGHT_MODE = NIGHT_MODE;
}

public String getSOFT_MODE() {
return SOFT_MODE;
}

public void setSOFT_MODE(String SOFT_MODE) {
this.SOFT_MODE = SOFT_MODE;
}

public String getSTANDARD_MODE() {
return STANDARD_MODE;
}

public void setSTANDARD_MODE(String STANDARD_MODE) {
this.STANDARD_MODE = STANDARD_MODE;
}

public LightModes() {
this.NIGHT_MODE = "NIGHT";
this.STANDARD_MODE = "STANDARD";
this.SOFT_MODE = "SOFT";
}
}

class SmartDevice {
private String name;
private double location;
private boolean switchedOn;

public SmartDevice(String name, double location, boolean switchedOn) {
this.name = name;
this.location = location;
this.switchedOn = switchedOn;
}

public String getName() {
return name;
}

public double getLocation() {
return location;
}

public boolean isSwitchedOn() {
return switchedOn;
}
}

class SmartLamp extends SmartDevice {
private LightModes lightModes;

public LightModes getLightModes() {
return lightModes;
}

public void setLightModes(LightModes lightModes) {
this.lightModes = lightModes;
}

public SmartLamp(String name, double location, boolean switchedOn) {
super(name, location, switchedOn);
}

public SmartLamp(LightModes lightModes, String name, double location, boolean switchedOn) {
super(name, location, switchedOn);
this.lightModes = lightModes;
}

@Override
public String toString() {
return "SmartLamp{" + "\nName." + getName() + "\nLocation." + getLocation()
+ "\nSwitchedOn." + isSwitchedOn() + "\nMode=" + getLightModes() + '}';
}
}

关于java - 如何将用户定义的数据类型中的值插入到java中的对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61967716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com