我是使用Java编写的新代码,并且完全使用任何语言。 让我为我的英语道歉。我的母语是西班牙语。
我在类中创建了一个开关,我想在main中调用它,但它带有一个参数(0),当我运行它时显示默认情况“La opcion ingresada es invalida”
这是主要方法:
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;
}
}
我希望你能帮助我......这是我的第一个问题
答案 0 :(得分:0)
我不确定我是否正确理解了问题是什么,但也许有帮助:
方法
Reservacion.Reservacion();
Reservacion.cantAdultos();
Reservacion.cantNiños();
Reservacion.cantNoches();
您正在返回一个整数。您在本地制作的具体方法。例如cantNiñosin:
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);
答案 1 :(得分:0)
理解这里发生的事情可能需要一段时间,因为你在问题片上发布了很多冗余。首先,如果你打算进一步使用它,那么在一些静态方法中初始化lugarhostel变量不是正确的方法。 但假设它可能是类的一部分,如:
public class Reservacion {
int lugarhostel = 0;
}
然后你只需要通过unaReser.method()使用你的方法,其中lugarhostel将是unaReser对象的状态,虽然可以访问和修改。 阅读有关java建议的值传递机制。这是非常重要的概念。我建议您从各处删除静态关键字,并考虑您拥有的对象保留。它应该包含一个状态和行为,可以更新它的状态。基本上,状态是一个对象的字段,您可以通过点运算符引用,如unaReser.lugarhostel。虽然行为基本上是方法。
您的代码设计糟糕,可能会对将来的维护产生很大影响。每次调用像Reservacion.cantAdultos()这样的静态方法时; 除了在方法中创建局部变量并返回它的值但不将其保存到main方法中的任何引用变量之外,您什么都不做。所以试着想一下字段:
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原则方面,这将是一个进步。