【问题标题】:For loop not printing what I expect. Need assistanceFor 循环没有打印我所期望的。需要帮助
【发布时间】:2017-01-31 04:23:57
【问题描述】:
int marsHeight = ml.getHeight() / 100 * 100; // measure by 100s despite height value
int chartHeight = (marsHeight >= 1000) ? marsHeight : 1000;
for (int i = 0; i <= (chartHeight / 100); i++)
{
    if (i == 0)
    {
        Console.WriteLine("{0}m: \t*", (marsHeight - (i * 100))); // in order to print in descending order: (height - (i * 100)
        continue;
    }
    Console.WriteLine("{0}m:", (marsHeight - (i * 100)));
}

如果 marsHeight 大于 1000(目前确实如此),我希望我的程序打印出来:

[marsHeight]m: 
[marsHeight - 100]m:  
...  
1000m:   
900m:  
800m:   
...   
0m:  // this works perfectly!

目前如果 marsHeight 小于 1000(比如 990),程序会打印出来:

900m: *  
800m:  
...  
0m:  
-100m:

如果小于1000m,我想要的是这个:

1000m:  
900m: *  
800m:  
...  
0m:  

我是编程新手。我的逻辑哪里出了问题?

【问题讨论】:

    标签: c# if-statement for-loop console.writeline


    【解决方案1】:

    改变这个

    int chartHeight = (marsHeight >= 1000) ? marsHeight : 1000;
    

    int chartHeight = (marsHeight <= 1000) ? marsHeight : 1000;
                                  ^
    

    如果您希望在两种情况下的输出都相同,例如它更大或更小。你可以让它像Not Equal toLike

    int chartHeight = (marsHeight =! 1000) ? marsHeight : 1000;
                                  ^^
    

    【讨论】:

    • 非常感谢!它解决了负值问题,但我还需要更改我的 if 语句?现在它从 800m 而不是 1000m 开始打印。
    【解决方案2】:
    // First get the value.
    int height = ml.getHeight();
    // Now round to nearest even value.
    int chartHeight = height / 100 * 100;
    // Find initial value of cycle.
    int forStart;
    if (chartHeight > 1000)
        forStart = chartHeight;
    else
        forStart = chartHeight < 0 ? 0 : 1000;
    // Also you can simplify cycle.
    for (int i = forStart; i >= 0; i -= 100)
        if(i==chartHeight)
            Console.WriteLine("{0}m:*", i);
        else
            Console.WriteLine("{0}m:", i);
    

    输出将是:
    如果身高 990

    1000m
    900m*
    ...
    0m
    

    如果高度 >1000

    1100m*
    1000m
    ...
    0m
    

    如果高度为 540

    1000m
    ...
    500m*
    ...
    0m
    

    【讨论】:

    • 这真的很接近,但如果高度大于 1000,我需要增加 chartHeight。
    • so,如果height小于1000,那么for语句从1000开始,如果大于1000,那么从height开始?
    • 你很高兴:)
    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多