如何在C#中使用while循环以相反的顺序输出数组中的元素?

时间:2016-03-19 17:46:00

标签: c# arrays while-loop

我的问题是如何以相反的顺序输出数组中的内容 按两种方式分组,只使用while循环 (即没有for-loop和Reverse方法等)

我知道第二个while循环不正确,但我不知道如何修改它。

提前感谢您的建议。

Console.WriteLine("Please type four things.");

const int MAX_SIZE = 4;
string[] things = new string[MAX_SIZE];
int i = 0;

while (i < MAX_SIZE)
{
    Console.WriteLine("Please type the things.");

    things[i] = Console.ReadLine();
    i++;
}

i = 0;

while (i < MAX_SIZE)
{
    Console.Write(things[i] + ", ");
    i--;
} 

3 个答案:

答案 0 :(得分:1)

尝试

i = MAX_SIZE - 1
while (i >= 0)
{
    Console.Write(things[i] + ", ");
    i--;
}         

我使用MAX_SIZE-1的原因是因为C#中的数组是基于0的。第一个元素将始终位于位置0.如果数组有4个元素,则最终元素将位于位置3。

如果您想以二人方式打印东西,可以执行以下操作:

i = MAX_SIZE - 1
while (i >= 0)
{
    Console.Write(things[i-1] + ", " things[i]);
    i -= 2;
}

答案 1 :(得分:0)

你有什么理由想使用while循环而不是for循环吗?

for(var i=0;i<MAX_SIZE;i++) {
    Console.WriteLine("Please type the things.");

            things[i] = Console.ReadLine();
            i++;
}

for(var i=MAX_SIZE-1;i>=0;i--){
    Console.Write(things[i] + ", ");
}

答案 2 :(得分:0)

如果我理解正确的任务,下一个代码应该适合你:

server <- function(input, output, session) {
  observeEvent(input$mydata, {
    len = length(input$mydata)
    output$tables <- renderUI({
      table_list <- lapply(1:len, function(i) {
        tableName <- names(input$mydata)[[i]]
        tableOutput(tableName)
      })
      do.call(tagList, table_list)
    })
    for (name in names(input$mydata)) {
      output[[name]] <- renderTable(read.csv(text=input$mydata[[name]]))
    }
  })
}
如果int i = things.Length - 1; while(i > 0) { Console.Write("({0}, {1}) ", things[i], things[i - 1]); i -= 2; } //in case the the list lenght is odd, output the last element without pair if(i == 0) { Console.Write("({0})", things[i]); } 列表长度始终为偶数,则可以省略

if语句,因为仅当您需要pring最后一个(things列表中的第一个)元素时才需要它没有一对。