我在这里学习Java!
我很难理解如何设置和获取方法。我正在单独编写教科书 Java编程,第9版中的一个问题,请执行以下操作:
“创建一个名为Sandwich
的类。数据字段包括主要成分(例如 tuna )的String
,面包类型的String
(例如 wheat ),价格为double
(例如4.99)。包括获取和设置每个字段的值的方法。”
然后它要求我这样做:
“创建一个名为TestSandwich
的应用程序,该应用程序实例化一个Sandwich
对象并演示set和get方法的使用。”
因此,对于第一部分,我使用以下代码制作了一个.java文件:
public class Sandwich {
private String ingredient;
private String bread;
private double price;
public Sandwich(String ing, String bre, double pri) {
ingredient = ing;
bread = bre;
price = pri;
}
public void setIngredient(String ing) {
this.ingredient = ing;
}
public String getIngredient() {
return ingredient;
}
public String getBread() {
return bread;
}
public Double getPrice() {
return price;
}
}
第二部分,我做了以下事情:
import java.util.Scanner;
public class TestSandwich {
public static void main(String[] args) {
String Ingredient;
String Bread;
Double Price;
Scanner keyboard = new Scanner(System.in);
System.out.println("MAKE A SANDWICH");
System.out.println("Enter an ingredient: ");
Ingredient = keyboard.nextLine();
System.out.println("Enter bread: ");
Bread = keyboard.nextLine();
System.out.println("Enter a price");
Price = keyboard.nextDouble();
Sandwich obj = new Sandwich(Ingredient, Bread, Price);
System.out.println("The ingredient is " + obj.getIngredient());
System.out.println("The bread is " + obj.getBread());
System.out.println("The price is " + obj.getPrice());
}
}
我完成了此操作,并且效果很好,但是我意识到我没有创建任何set方法。有人可以根据指示向我解释更好的方法吗?我敢肯定这种方式可行,但是我希望通过本书来做,并且能够更好地理解它。我不确定从哪里开始创建set方法。请告诉我。非常感谢!
PS:这不是功课,我只是想更好地理解这一点。
-标记
答案 0 :(得分:3)
在这里创建具有这些值的对象
Sandwich obj = new Sandwich(Ingredient, Bread, Price);
在这里创建一个空对象,然后设置值
Sandwich obj = new Sandwich();
obj.setIngredient(Ingredient);
obj.setBread(Bread);
obj.setPrice(Price);
答案 1 :(得分:2)
在名为 Sandwich 的类中考虑以下代码:
public Sandwich(String ing, String bre, double pri) {
ingredient = ing;
bread = bre;
price = pri;
}
这称为构造函数,这是一种特殊的方法,与类的名称相同。但是它不返回值。该构造函数接受三个参数,其中两个是字符串,一个是双精度值。在构造函数主体中,您实际上是在设置作为参数传递给构造函数的值,因此您可以将其视为同时设置三个值的setter方法。
现在在同一个类中考虑以下代码:
public void setIngredient(String ing) {
this.ingredient = ing;
}
此方法是设置方法,仅设置一个值,即成分。您还可以创建其他设置方法,并以此命名您想要的任何名称。例如,Sandwich类中的setBread和setPrice方法如下:
public setBread(String bre) {
bread = bre;
}
public setPrice(double pri) {
price = pri;
}
您可以使用构造函数来设置值,也可以使用“设置方法”(这是用于接受和设置值的普通方法)。您可以使用一个方法一次性设置所有值,这是构造函数正在做的事情,也可以使用单个方法来设置每个值,例如我们定义的setter方法。
如果您使用单个方法一次设置所有值(在这种情况下为构造器,则为 ),那么在实例化Sandwich类时,您需要一次将所有值传递给构造器就像您这样做:
Sandwich obj = new Sandwich(Ingredient, Bread, Price);
如果不按正确的顺序一次将三个变量传递给构造函数,则会发生编译错误。由于您已经有一个设置三个值的构造函数,因此其他的setter方法没什么用,除非您随后需要更改这些值。我希望这会有所帮助。
答案 2 :(得分:1)
简单的样子:
System.out.println("Enter another price");
double newPrice = keyboard.nextDouble();
obj.setPrice(newPrice);
并在该调用之前/之后打印obj
(当然,在该类上@Overwrite toString()以获得有意义的输出)。