我的问题是如何以相反的顺序输出数组中的内容 按两种方式分组,只使用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--;
}
答案 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
列表中的第一个)元素时才需要它没有一对。