一个获取 10 个数字并以相反顺序打印它们的程序
a program that get 10 numbers and print them in reverse order
我正在尝试编写一个接受 10 个输入并以相反顺序打印它们的程序。这是我在 C# 中的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace inverse
{
class Program
{
static void Main(string[] args)
{
int i ;
int[] n = new int[10];
Console.WriteLine("please enter 10 numbers");
for (i = 1; i <= 10; i++)
n[i] =int.Parse(Console.ReadLine());
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i] + " ");
Console.ReadKey();
}
}
}
它没有出现任何错误,但在我尝试调试它时它也不起作用。你能帮帮我吗?
使用下面的代码:
static void Main(string[] args)
{
int i;
int[] n = new int[11];
Console.WriteLine("please enter 10 numbers");
for (i = 1; i <= 10; i++)
n[i] = Convert.ToInt32((Console.ReadLine()));
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i] + " ");
Console.ReadKey();
}
问题是数组索引超出范围,因为数组从 0 开始。当我放弃最多 10 个输入时它给了我错误。
你需要从 0 到 9 开始,反之亦然
for (i = 0; i <= 9 i++)
n[i] =int.Parse(Console.ReadLine());
for (i = 9; i >= 0; i--)
Console.WriteLine(n[i]);
您应该将第二个 for 循环更改为:
for (i = 9; i >= 0; i--)
为什么?
因为在你不正确的for循环中,i
从10开始。在每次迭代中,它递减,直到i >= 1
。换句话说,i
的值从 10 变为 1。
但这不是数组的工作方式,是吗? C# 中的数组是从 0 开始的,这意味着第一项位于索引 0,最后一项位于索引 (length - 1)。在这种特定情况下,最后一项将位于索引 9 (10 - 1 = 9)!
当您尝试访问索引 10 处的项目时,它当然会抛出异常,因为数组在索引 9 处结束!此外,即使它在索引 10 处有一个项目,也不会打印数组的第一项,因为循环在 i = 1
.
处停止
这就是为什么您希望 i
的值从 9 变为 0 而不是 10 变为 1。
编辑:
我刚刚意识到你又犯了一个错误,你的第一个 for 循环也不正确。它应该从 0 循环到 9,而不是从 1 到 10。这是正确的版本:
for (int i = 0 ; i <= 9, i++)
或者,您可以只添加 - 1
:
而不是更改循环的 headers
for (i = 1; i <= 10; i++)
n[i - 1] =int.Parse(Console.ReadLine());
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i - 1] + " ");
我正在尝试编写一个接受 10 个输入并以相反顺序打印它们的程序。这是我在 C# 中的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace inverse
{
class Program
{
static void Main(string[] args)
{
int i ;
int[] n = new int[10];
Console.WriteLine("please enter 10 numbers");
for (i = 1; i <= 10; i++)
n[i] =int.Parse(Console.ReadLine());
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i] + " ");
Console.ReadKey();
}
}
}
它没有出现任何错误,但在我尝试调试它时它也不起作用。你能帮帮我吗?
使用下面的代码:
static void Main(string[] args)
{
int i;
int[] n = new int[11];
Console.WriteLine("please enter 10 numbers");
for (i = 1; i <= 10; i++)
n[i] = Convert.ToInt32((Console.ReadLine()));
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i] + " ");
Console.ReadKey();
}
问题是数组索引超出范围,因为数组从 0 开始。当我放弃最多 10 个输入时它给了我错误。
你需要从 0 到 9 开始,反之亦然
for (i = 0; i <= 9 i++)
n[i] =int.Parse(Console.ReadLine());
for (i = 9; i >= 0; i--)
Console.WriteLine(n[i]);
您应该将第二个 for 循环更改为:
for (i = 9; i >= 0; i--)
为什么?
因为在你不正确的for循环中,i
从10开始。在每次迭代中,它递减,直到i >= 1
。换句话说,i
的值从 10 变为 1。
但这不是数组的工作方式,是吗? C# 中的数组是从 0 开始的,这意味着第一项位于索引 0,最后一项位于索引 (length - 1)。在这种特定情况下,最后一项将位于索引 9 (10 - 1 = 9)!
当您尝试访问索引 10 处的项目时,它当然会抛出异常,因为数组在索引 9 处结束!此外,即使它在索引 10 处有一个项目,也不会打印数组的第一项,因为循环在 i = 1
.
这就是为什么您希望 i
的值从 9 变为 0 而不是 10 变为 1。
编辑:
我刚刚意识到你又犯了一个错误,你的第一个 for 循环也不正确。它应该从 0 循环到 9,而不是从 1 到 10。这是正确的版本:
for (int i = 0 ; i <= 9, i++)
或者,您可以只添加 - 1
:
for (i = 1; i <= 10; i++)
n[i - 1] =int.Parse(Console.ReadLine());
for (i = 10; i >= 1; i--)
Console.WriteLine(n[i - 1] + " ");