我试着做一个程序,在程序中输入配料的名称和数量,以及烤箱的温度。程序应该将它们混合在一起,并告诉我是否可以烘烤它们。
Zutat类是原料的类别,有名称和数量。Teig类是用来混合所有原料的面团。它对每种原料都说出了用来制作面团的名称和数量,最后还写着“生面团”之类的东西。是烤箱用的那种。它应该在一定温度下烤面团。用维纳切斯班是用来把面团放在一起的。先加入原料,然后制作面团,然后在温度下烘烤。如果温度低于200,它会在屏幕上显示“饼干很棒”,否则“你烧了它们”。
我对用类和方法编程很陌生,我有点喜欢上Weihnachtsbaeckerei的课程。有人能帮我解决这个问题吗?在不改变其他类的情况下?
提前谢谢你!
public class aufgabe12 {
public class Zutat{
public String Namen;
public int Menge;
}
public class Teig{
public boolean geknetet;
public void zutatHinzufugen(String Zutat){
System.out.println("Zutat hinzugefuegf: " + Zutat.Namen + " (" + Zutat.Menge + "g)");
}
public void kneten(){
geknetet = true;
System.out.println("Teig geknetet");
}
}
public class Ofen{
public boolean backen(String Teig, int Temperatur){
if(Temperatur<200){
return(true);
} else {
return(false);
}
}
public void kneten(){}
}
public void main(String[] args){
public class Weihnachtsbaeckerei{
Zutat zutat1 = new Zutat();
Zutat zutat2 = new Zutat();
Zutat zutat3 = new Zutat();
zutat1.Namen = "Mehl";
zutat1.Menge = 200;
zutat2.Namen = "Zucker";
zutat2.Menge = 100;
zutat3.Namen = "Eier";
zutat3.Menge = 150;
zutatHinzufugen(zutat1);
zutatHinzufugen(zutat2);
zutatHinzufugen(zutat3);
kneten();
ofen(zutat1, 180);
ofen(zutat2, 180);
ofen(zutat3, 180);
if(ofen==true){
System.out.println("Hmmmm lecker");
} else {
System.out.println("Leider schief gegangen");
}
}
}有错误的行是:
System.out.println("Zutat hinzugefuegf: " + Zutat.Namen + " (" + Zutat.Menge + "g)");
zutat1.Namen = "Mehl";
zutat1.Menge = 200;
zutat2.Namen = "Zucker";
zutat2.Menge = 100;
zutat3.Namen = "Eier";
zutat3.Menge = 150;
zutatHinzufugen(zutat1);
zutatHinzufugen(zutat2);
zutatHinzufugen(zutat3);发布于 2015-12-17 14:09:43
圣诞快乐。请考虑我对您的代码所做的更改。
首先-你的Teig需要接受一个Zutat,而不是一个字符串:
// Add a Zutat, not a String
public void zutatHinzufugen(Zutat dazu) {
System.out.println("Zutat hinzugefuegf: " + dazu.Namen + " (" + dazu.Menge + "g)");
}然后,你会想要烘烤整个泰格,而不是单一的祖顿:
public class Ofen {
// You bake the Teig, not the Zutat
public boolean backen(Teig teig, int Temperatur) {
if (Temperatur < 200) {
return (true);
} else {
return (false);
}
}
}如果Teig不是gerührt,您可能想要抛出一个异常。
最后,在您的主创建一个Teig,创建一个Ofen,如果所有放在一起:
public void main(String[] args) {
Teig teig = new Teig();
Zutat zutat1 = new Zutat();
Zutat zutat2 = new Zutat();
Zutat zutat3 = new Zutat();
zutat1.Namen = "Mehl";
zutat1.Menge = 200;
zutat2.Namen = "Zucker";
zutat2.Menge = 100;
zutat3.Namen = "Eier";
zutat3.Menge = 150;
teig.zutatHinzufugen(zutat1);
teig.zutatHinzufugen(zutat2);
teig.zutatHinzufugen(zutat3);
teig.kneten();
//You need an ofen
Ofen ofen = new Ofen();
//You bake only once
if (ofen.backen(teig, 180)) {
System.out.println("Hmmmm lecker");
} else {
System.out.println("Leider schief gegangen");
}
}以下是完整的代码:
public class WeihnachtsbaeckereiTest {
public class Zutat {
public String Namen;
public int Menge;
}
public class Teig {
public boolean geknetet;
// Add a Zutat, not a String
public void zutatHinzufugen(Zutat dazu) {
System.out.println("Zutat hinzugefuegf: " + dazu.Namen + " (" + dazu.Menge + "g)");
}
public void kneten() {
geknetet = true;
System.out.println("Teig geknetet");
}
}
public class Ofen {
// You bake the Teig, not the Zutat
public boolean backen(Teig teig, int Temperatur) {
if (Temperatur < 200) {
return (true);
} else {
return (false);
}
}
}
public void main(String[] args) {
Teig teig = new Teig();
Zutat zutat1 = new Zutat();
Zutat zutat2 = new Zutat();
Zutat zutat3 = new Zutat();
zutat1.Namen = "Mehl";
zutat1.Menge = 200;
zutat2.Namen = "Zucker";
zutat2.Menge = 100;
zutat3.Namen = "Eier";
zutat3.Menge = 150;
teig.zutatHinzufugen(zutat1);
teig.zutatHinzufugen(zutat2);
teig.zutatHinzufugen(zutat3);
teig.kneten();
//You need an ofen
Ofen ofen = new Ofen();
//You bake only once
if (ofen.backen(teig, 180)) {
System.out.println("Hmmmm lecker");
} else {
System.out.println("Leider schief gegangen");
}
}
}发布于 2015-12-17 14:08:54
在你的情况下,我会建议一个不同的方法。当然,可以将所有类放在类aufgabe12中(这有点拼写错误,因为根据代码约定,类应该以大写字母开头,所以最好使用Aufgabe12)。
如果您想要创建一个面向对象的程序,我建议您将这些类拆分一下,并为每个类创建单个文件。将变量声明为私有变量,并使用getter和setter。例如,它应该是这样的:
public class Zutat{
private String namen;
private int menge;
//talking about conventions, don't use upper case letters for variables unless they are constants.
public String getNamen(){
return this.namen;
}
public void setNamen(String namen){
this.namen = namen;
}
//do the same thing with the variable "menge".
//it's also a good idea to create a constructor for that class that creates an instance of Zutat for you. That would look as follows:
public Zutat(String namen, int menge){
this.namen = namen;
this.menge = menge;
}
}在main方法中,您可以创建如下所示的实例。
public void static main(String[] args){
Zutat z1 = new Zutat("Mehl", 200);
}如前所述,不能在方法中指定类。这就是导致编译错误的原因。
考虑到语义,我想您应该从将aufgabe12替换为Weihnachtsb ckerei开始。(不要使用“tho”)这应该是环绕主方法的类。
把所有这些放在一起,你就可以得到以下信息:
public class Weihnachtsbaeckerei{
public static void main(String[] args){
Teig teig = new Teig();
Zutat zutat1 = new Zutat("Mehl", 200);
Zutat zutat2 = new Zutat("Zucker", 100);
Zutat zutat3 = new Zutat("Eier", 150);
teig.zutatHinzufugen(zutat1);
teig.zutatHinzufugen(zutat2);
teig.zutatHinzufugen(zutat3);
teig.kneten();
Ofen ofen = new Ofen();
if (ofen.backen(teig, 180)) {
System.out.println("Hmmmm lecker");
} else {
System.out.println("Leider schief gegangen");
}
}
}Zutat.java
public class Zutat{
private String namen;
private int menge;
public Zutat(String namen, int menge){
this.namen = namen;
this.menge = menge;
}
public String getNamen(){
return this.namen;
}
public int getMenge(){
return this.menge;
}
}Teig.java
public class Teig{
private boolean geknetet;
public void zutatHinzufugen(Zutat zutat){
System.out.println("Zutat hinzugefuegf: " + zutat.getNamen() + " (" + zutat.getMenge() + "g)");
}
public void kneten(){
this.geknetet = true;
System.out.println("Teig geknetet");
}
}Ofen.java
public class Ofen{
public boolean backen(Teig teig, int temperature){
if(temperature < 200){
return(true);
} else {
return(false);
}
}
//Der Ofen knetet nicht...and it's never called. Therefore delete this method.
public void kneten(){}
}希望这能帮上忙..。既然你的任务现在已经解决了两次。我不知道将代码分成不同的类和文件是否是任务的一部分,但这基本上是Java效率的原因,所以请记住这一点。如果你有任何问题,不要犹豫。圣诞快乐!
https://stackoverflow.com/questions/34336037
复制相似问题