在主方法java中为开关创建参数
我对Java和任何语言都是新手。 让我为我的英语道歉。我的母语是西班牙语 我在一个类中创建了一个开关,我想在main中调用它,但它带有一个参数(0),当我运行它时,它会显示默认情况“La opcion Ingreada es invalida” 这是主要的方法:在主方法java中为开关创建参数,java,switch-statement,Java,Switch Statement,我对Java和任何语言都是新手。 让我为我的英语道歉。我的母语是西班牙语 我在一个类中创建了一个开关,我想在main中调用它,但它带有一个参数(0),当我运行它时,它会显示默认情况“La opcion Ingreada es invalida” 这是主要的方法: public class Triwago { public static void main(String[] args) { Reservacion unaReser=new Res
public class Triwago
{
public static void main(String[] args)
{
Reservacion unaReser=new Reservacion();
Reservacion.Bievenida();
Reservacion.Reservacion();
Reservacion.cantAdultos();
Reservacion.cantNiños();
Reservacion.cantNoches();
Reservacion.switchReser(lugarhostel);
}
}
这是我打电话给的班级:
public class Reservacion {
public static String Bievenida ()
{
JOptionPane.showMessageDialog(null, "Bienvenido a Triwago\nA continuación el sistema le guiara por el servicio de reserva");
return null;
}
public static int Reservacion ()
{
int lugarhostel;
lugarhostel=Integer.parseInt(JOptionPane.showInputDialog(null, "Digite 1 si desea reservar en playa o 2 para montaña"));
return lugarhostel;
}
public static int cantAdultos()
{
int cantAdult;
cantAdult=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de adultos:"));
return cantAdult;
}
public static int cantNiños()
{
int cantNiños;
cantNiños=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de niños"));
return cantNiños;
}
public static int cantNoches()
{
int cantNoches;
cantNoches=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de noches"));
return cantNoches;
}
public static int switchReser(int lugarhostel)
{
switch (lugarhostel) {
case 1:
Reservacion.Playa(lugarhostel, lugarhostel, lugarhostel);
break;
case 2:
Reservacion.Montaña(lugarhostel, lugarhostel, lugarhostel);
break;
default:
JOptionPane.showMessageDialog(null, "Opcion invalida");
break;
}
return lugarhostel;
}
public static int Playa(int cantAdult,int cantNiños,int cantNoches)
{
int precioAdult=10000;
int precioNiño=7000;
int preciototalAdult;
int preciototalNiño;
int preciototal;
preciototalAdult=(cantAdult*cantNoches*precioAdult);
preciototalNiño=(cantNiños*cantNoches*precioNiño);
preciototal=preciototalAdult+preciototalNiño;
JOptionPane.showMessageDialog(null, "La cantidad de adultos es: "+cantAdult+"\nLa cantidad de niños es: "+cantNiños+
"\nLa cantidad de noches es: "+cantNoches+"\nEl precio a pagar por los adultos es de: "+preciototalAdult+
"\nEl precio a pagar por los niños es de: "+preciototalNiño+"\nEl total a pagar es de: "+preciototal);
return preciototal;
}
public static int Montaña(int cantAdult,int cantNiños,int cantNoches)
{
int precioAdult=10000;
int precioNiño=7000;
int preciototalAdult;
int preciototalNiño;
int preciototal;
cantAdult=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de adultos:"));
cantNiños=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de niños"));
cantNoches=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de noches"));
preciototalAdult=(cantAdult*cantNoches*precioAdult);
preciototalNiño=(cantNiños*cantNoches*precioNiño);
preciototal=preciototalAdult+preciototalNiño;
JOptionPane.showMessageDialog(null, "La cantidad de adultos es: "+cantAdult+"\nLa cantidad de niños es: "+cantNiños+
"\nLa cantidad de noches es: "+cantNoches+"\nEl precio a pagar por los adultos es de: "+preciototalAdult+
"\nEl precio a pagar por los niños es de: "+preciototalNiño+"\nEl total a pagar es de: "+preciototal);
return preciototal;
}
}
我希望你能帮助我…这是我在这里的第一个问题我不确定我是否正确理解了问题所在,但也许它有帮助: 在方法上
Reservacion.Reservacion();
Reservacion.cantAdultos();
Reservacion.cantNiños();
Reservacion.cantNoches();
您正在返回一个整数。你在本地用特定的方法制作的。例如,在:
public static int cantNiños(){
int cantNiños;
cantNiños=Integer.parseInt(...);
return cantNiños;
}
如果不将方法的值指定给某个对象,则cantNiños将丢失,例如:
int someInt = Reservacion.cantNiños();
因此,当您使用开关调用您的方法时,您应该有如下内容:
int lugarhostel = Reservacion.cantNiños();
Reservacion.switchReser(lugarhostel);
理解这里发生的事情可能需要一段时间,因为你在一个问题上贴了很多多余的东西。首先,如果您打算进一步使用,那么在某个静态方法中初始化lugarhostel变量不是正确的方法。 但假设它可能是一个类的一部分,比如:
public class Reservacion {
int lugarhostel = 0;
}
然后您只需要通过unaReser.method()使用您的方法,其中lugarhostel将是unaReser对象的状态,尽管可以访问和修改。
了解java propose的传递值机制。这是一个非常重要的概念。我建议您从任何地方删除静态关键字,并考虑您的对象保留。它应该由状态和行为组成,可以更新它的状态。基本上,状态是一个对象的字段,您可以通过点运算符(如unaReser.lugarhostel)引用该字段。而行为基本上是方法
您的代码设计不好,可能会严重影响将来的维护。每次调用Reservacion.cantAdultos()之类的静态方法时;
您只需在方法内创建局部变量并返回其值,而不将其保存到主方法中的任何引用变量。因此,试着考虑一下字段:
public class Reservacion {
int lugarhostel;
int cantAdult;
int cantNiños;
int cantNoches;
// behavior...
例如,关于Reservacion类的状态。而cant***方法可以更新Reservacion类对象引用状态,例如:
//behaviour..
public void Reservacion() {
lugarhostel=Integer.parseInt(JOptionPane.showInputDialog(null, "Digite 1 si desea reservar en playa o 2 para montaña"));
}
public void cantNoches(){
cantNoches=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de noches"));
}
public void cant...
当您收集unaReser对象的状态时,您可以将其传递给静态方法,如下所示:
public static void switchReser(Reservacion unaReser) {
switch (unaReser.lugarhostel) {
case 1:
Reservacion.Playa(unaReser.cantAdult, unaReser.cantNiños, unaReser.cantNoches);
break;
case 2:
Reservacion.Montaña(unaReser.cantAdult, unaReser.cantNiños, unaReser.cantNoches);
break;
default:
JOptionPane.showMessageDialog(null, "Opcion invalida");
break;
}
}
这也不是一个完美的设计。但这对您理解OOP和基本java原则来说是一个进步。我不确定您在这里要问什么。您的意思是,当您将
0
传递到只包含1
和2
大小写的switch语句中时,您会得到默认大小写。。。?正如预期的那样。你能在函数名中包含ñ
吗?@Coldspeed是的,你可以。