Java 从数组中选择价值最高和价值较低的日期时遇到问题

Java 从数组中选择价值最高和价值较低的日期时遇到问题,java,arrays,Java,Arrays,我有这段代码,数组为7天,用户输入哪一天和每天多少票。 循环将继续,直到数量大于50(总票数)。 我想挑一个最受欢迎的日子,一个不那么受欢迎的日子。 代码如下: int ticketCounter=0; final int MAX_TICKET=50; int[] dayOfTicket=new int[7]; int mostWantedDay=dayOfTicket[0]; int LessWantedDay=dayOfTicket[0]; int indexOfWantedDay=0; i

我有这段代码,数组为7天,用户输入哪一天和每天多少票。 循环将继续,直到数量大于50(总票数)。 我想挑一个最受欢迎的日子,一个不那么受欢迎的日子。 代码如下:

int ticketCounter=0;
final int MAX_TICKET=50;
int[] dayOfTicket=new int[7];
int mostWantedDay=dayOfTicket[0];
int LessWantedDay=dayOfTicket[0];
int indexOfWantedDay=0;
int indexOfLessWantedDay=0;
 while(ticketCounter<=MAX_TICKET){
    System.out.println("Enter the day number (1-7) and the number of tickets:");
    int whichDay=s.nextInt();
    int numberOfTicket=s.nextInt();

        if(whichDay>0 && whichDay<8){
        dayOfTicket[whichDay-1]+=numberOfTicket;
        ticketCounter+=numberOfTicket;
        }else{
        System.out.println("Invalid input.\n");
        }   
    }
}
    for(int f=0;f<dayOfTicket.length;f++){
        if(dayOfTicket[f]>mostWantedDay){
            indexOfWantedDay=f+1;
        }
        if(dayOfTicket[f]<LessWantedDay){
            indexOfLessWantedDay=f+1;
        }
System.out.printf("The day with max tickets is: %d \nThe day with min tickets is: %d \n\n",indexOfWantedDay, indexOfLessWantedDay);        
int-ticketCounter=0;
最终int MAX_票证=50;
int[]dayOfTicket=新int[7];
int mostWantedDay=dayOfTicket[0];
int-LessWantedDay=dayOfTicket[0];
int indexOfWantedDay=0;
int indexOfLessWantedDay=0;

while(ticketCounter0&&whichDay您不太想要的一天总是打印0的原因是,这很可能低于输入的输入

另一种方法是将lessWantedDay值设置为INTEGER.MAX_值,或仅设置最大票证值,或设置另一个任意随机大数,如9001、100000,诸如此类

另一种替代方法(如果您不能使用上面提到的基本内容)是,您可以将LessWantedDay和mostWantedDay设置为从用户获得输入后数组的第一个元素

    int mostWantedDay;
    int LessWantedDay;
    <snipped out input logic/>
    mostWantedDay = dayOfTicket[0];
    LessWantedDay = dayOfTicket[0];
int mostWantedDay;
莱斯万特代国际酒店;
mostWantedDay=dayOfTicket[0];
LessWantedDay=dayOfTicket[0];
无论何时,只要找到最短和最长的一天,都需要使用找到的值更新mostWantedDay和LessWantedDay的值

您的if语句如下所示:

 if(dayOfTicket[f]>mostWantedDay){
        indexOfWantedDay=f+1;
        mostWantedDay = dayOfTicket[f];
    }
    if(dayOfTicket[f]<LessWantedDay){
        indexOfLessWantedDay=f+1;
        LessWantedDay = dayOfTicket[f];
    }
if(dayOfTicket[f]>mostWantedDay){
indexOfWantedDay=f+1;
mostWantedDay=提克特岛的一天[f];
}

如果(dayOfTicket[f]部分问题是在初始化
LessWantedDay
时出现的,则最初将其设置为0

使用将此值初始化为可能的最大值

int LessWantedDay=Integer.MAX_VALUE;
此外,您需要更新检查中的逻辑以过滤出0(假设您想要打印没有0张票据的日期),并在解析
dayOfTicket
数组时更新最大/最小值

for(int f=0;f<dayOfTicket.length;f++){
    if(dayOfTicket[f]>mostWantedDay){
        indexOfWantedDay=f+1;
        mostWantedDay = dayOfTicket[f];
    }
    if(dayOfTicket[f]<LessWantedDay && dayOfTicket[f] > 0){
        indexOfLessWantedDay=f+1;
        LessWantedDay = dayOfTicket[f]
    }
}

这段代码几乎完全正确

在你的循环中,你说:

for(int f=0;f<dayOfTicket.length;f++){
    if(dayOfTicket[f]>mostWantedDay){
        indexOfWantedDay=f+1;
    }
    if(dayOfTicket[f]<LessWantedDay){
        indexOfLessWantedDay=f+1;
    }
}
for(int f=0;fmostWantedDay){
indexOfWantedDay=f+1;
}

如果(dayOfTicket[f]在您从用户那里获得所有必要的数据后,如何查找
mostWantedDay
LessWantedDay
?这是一个复制粘贴错误,for循环超出了范围,我不知道我为什么不打开它,我做了一些更改,完全忘了将它带回来,(新的变量集),再次感谢大家的帮助,这很有意义:)很高兴我能帮上忙!总是一些小细节破坏了你的程序,而这些细节也是最难找到的。实际上,不太需要的一天,仍然可以打印0。请确保你已经更新了你的代码以添加int-LessWantedDay=Integer.MAX_值;我已经尝试了几个例子,但无法让程序打印0。请给我一个具体的例子,我可以在我这边试试。例如“5 2,6 20,7 20,1 10”我仍然不明白我的答案为什么不正确?我不能产生无效的输出(少于0天).@rassko int LessWantedDay=Integer.MAX_VALUE;,您是否尝试过像我和其他人提到的那样使用它,然后运行它?我现在不能使用这个方法,我需要简单的方法。@rassko是问题中的代码当前版本?将LessWantedDay设置为一些随机大数,比如20000,或者沿着这些lines。为什么不能使用max integer?那不是真的,因为我的数组列表是从0到6,我的第一天是1。所以我总是需要对索引加上+1才能使它成为真实的一天。是的,它是真的。因为你调用了变量“INDEXOfWantedDay”它显然指的是索引。第一天的索引是0,第二天的索引是1。如果你想让它指的是这一天,也许你应该把它恰当地命名为“mostWantedDay”。
for(int f=0;f<dayOfTicket.length;f++){
    if(dayOfTicket[f]>mostWantedDay){
        indexOfWantedDay=f+1;
    }
    if(dayOfTicket[f]<LessWantedDay){
        indexOfLessWantedDay=f+1;
    }
}
for(int f=0;f<dayOfTicket.length;f++){
    if(dayOfTicket[f]>mostWantedDay){
        indexOfWantedDay=f;
        mostWantedDay = dayOfTicket[f];
    }
    if(dayOfTicket[f]<LessWantedDay){
        indexOfLessWantedDay=f;
        LessWantedDay[f] = dayOfTicket[f];
    }
}