有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用两个循环,但只有一个循环通过。计算机科学导论。(爪哇)

所以我试图创建一个简单的股票计划。我的第一个循环工作,但它不会传递到我的第二个循环,我不知道为什么。我尝试过中断和if语句,但我无法理解

days = JOptionPane.showInputDialog("Enter the number of days in the stock period"); //Allows user to enter value
sharePoints = JOptionPane.showInputDialog("Enter the share points on the first day");   
int daynum = Integer.parseInt(days);
int share = Integer.parseInt(sharePoints);

int dayStart = 1;
double daynumMidPoint = (daynum/2);
System.out.println(share);
Math.round(daynumMidPoint);

for(int i = dayStart;i<daynumMidPoint;i++) {
    System.out.println(share=share+50);
}

for(int l = dayStart;l>=daynumMidPoint;l++){
    System.out.println(share=share-25);
}

共 (3) 个答案

  1. # 1 楼答案

    表明

    int dayStart = 1;
    

    设置为1时,另一个循环将不起作用:

    for(int l = dayStart;l>=daynumMidPoint;l++){
    System.out.println(share=share-25);
    

    由于l被设置为1,并且循环要运行,您需要l大于或等于daynumMidPoint,并且由于这被设置为double daynumMidPoint = (daynum/2);,因此它不会运行,因为它大于l

    另外,如果你想让股价在当天低于中点时上涨,而在当天高于中点时下跌,你可以这样说(或类似的话):

    if(i<daynumMidPoint){
    SOP(share=share+50);} 
    else{
    SOP(share=share-25);
    }
    

    在这个for循环中:

    for(int i = dayStart;i<daynumMidPoint;i++) {
    
    }
    
  2. # 2 楼答案

    如果第一个循环工作,第二个循环将不会工作,因为第一个循环只有在dayStartdaynumMidPoint时才会启动,而第二个循环只有在dayStart高于或等于daynumMidPoint时才会启动

    如果第一个成功,那么第二个肯定不会成功

  3. # 3 楼答案

    您的数学错误,第二个循环的条件未满足

    int dayStart = 1;
    double daynumMidPoint = (daynum/2); // daynum = 10  -> daynumMidPoint = 5
    System.out.println(share);
    Math.round(daynumMidPoint);
    
    for(int i = dayStart;i<daynumMidPoint;i++) // i = 1, Condition: i < 5 = true
    {
        System.out.println(share=share+50);
    }
    for(int l = dayStart;l>=daynumMidPoint;l++) // l = 1, Condition l >= 6 = false
    {
        System.out.println(share=share-25);
    }
    

    所以要解决这个问题,您需要调整第二个for循环的条件。 或者您需要将l设置为不同的起始值