Java 令人困惑的是,为什么不能呼叫无效乘客,并且没有任何错误

Java 令人困惑的是,为什么不能呼叫无效乘客,并且没有任何错误,java,Java,我是Java的新手。需要专家的建议。我想做一个程序,询问每层楼到达时有多少乘客。我注意到,如果我删除了调用请求,循环将只工作一次。但我需要它不断重复。不管怎样,在不删除任何当前其他方法的情况下实现它?谢谢 import java.util.Scanner; 公务舱电梯{ 私人楼层; 专用静态最终int MAXFLOOR=15; 新楼国际酒店; int-newP; int currentP=1; int maxP=20; 公共电梯(){ 当前楼层=1; } 公共交通乘客(){ 扫描仪scanner

我是Java的新手。需要专家的建议。我想做一个程序,询问每层楼到达时有多少乘客。我注意到,如果我删除了调用请求,循环将只工作一次。但我需要它不断重复。不管怎样,在不删除任何当前其他方法的情况下实现它?谢谢

import java.util.Scanner;
公务舱电梯{
私人楼层;
专用静态最终int MAXFLOOR=15;
新楼国际酒店;
int-newP;
int currentP=1;
int maxP=20;
公共电梯(){
当前楼层=1;
}
公共交通乘客(){
扫描仪scanner1=新扫描仪(System.in);
System.out.println(“输入总乘客:”);
newP=scanner1.nextInt();
如果(newP>maxP | | newP==currentP){
系统输出打印号(“无效乘客号”);
乘客();
}
否则{
if(newPcurrentP){
maxPassenger();
}
}
乘客();
}
公众假期{
系统输出打印项次(“最大乘客”);
}
公共交通乘客(){
系统输出打印项次(“0名乘客,不可接受”);
}
公共空白显示(对象a){
系统输出打印项次(a);
}
公共作废请求(对象a){
系统输出打印项次(a);
}
公共无效延迟(整数毫秒){
试一试{
睡眠(ms);
}
捕获(例外e){
}
}
公共空间向上移动(){
System.out.println(“从楼层开始”+当前楼层);
while(currentFloor++新建楼层){
System.out.println(“下降-现在在楼层”+当前楼层);
延迟(600);
}
currentFloor++;
System.out.println(“停在楼层”+新楼层);
}
公共作废请求(){
扫描仪=新的扫描仪(System.in);
System.out.println(“进入新楼层:”);
newFloor=scanner.nextInt();
如果(新地板>最大地板| |新地板==当前地板){
System.out.println(“楼层编号不正确,未采取任何措施”);
请求();
}
否则{
如果(新楼层<当前楼层){
向下移动();
}
否则如果(新建楼层>当前楼层){
moveUp();
}
}
请求();
}
公共静态void main(字符串[]args){
电梯e=新电梯();
e、 请求();
e、 乘客();
}
}
这是您的
main()
方法

publicstaticvoidmain(字符串[]args){
电梯e=新电梯();
e、 请求();
e、 乘客();
}
方法
request()
永远不会结束,因为该方法中的最后一行是对自身的调用。因此,永远不会执行行
e.passenger()

您应该在方法
main()
中放置
while
循环,并决定终止循环的方法,例如进入负楼层。并删除方法
request()
中的最后一行–同样,对于方法
passenger()
,删除再次调用该方法的最后一行

我相信下面的代码符合您的要求。请注意,只需创建一次
扫描仪
对象

import java.util.Scanner;
公务舱电梯{
私人扫描仪;
私人楼层;
专用静态最终int MAXFLOOR=15;
新楼国际酒店;
int-newP;
int currentP=1;
int maxP=20;
公共电梯(){
当前楼层=1;
扫描仪=新扫描仪(System.in);
}
公共交通乘客(){
系统输出打印(“输入总乘客:”);
newP=scanner.nextInt();
如果(newP>maxP | | newP==currentP){
系统输出打印号(“无效乘客号”);
乘客();
}
否则{
if(newPcurrentP){
maxPassenger();
}
}
}
公众假期{
系统输出打印项次(“最大乘客”);
}
公共交通乘客(){
系统输出打印项次(“0名乘客,不可接受”);
}
公共空白显示(对象a){
系统输出打印项次(a);
}
公共作废请求(对象a){
系统输出打印项次(a);
}
公共无效延迟(整数毫秒){
试一试{
睡眠(ms);
}
捕获(例外e){
}
}
公共空间向上移动(){
System.out.println(“从楼层开始”+当前楼层);
while(currentFloor++新建楼层){
System.out.println(“下降-现在在楼层”+当前楼层);
延迟(600);
}
currentFloor++;
System.out.println(“停在楼层”+新楼层);
}
公共作废请求(){
系统输出打印(“进入新楼层:”;
newFloor=scanner.nextInt();
如果(新楼层<0){
当前楼层=ne