问题描述
- 在数组插入数据的问题
-
如图,写了一个在数组中插入一个数据的代码,输入的数据小于30时,能正常显示结果。但输入的数据大于30时,原始数组的最后一个数组35,就不见了,变成了以0显示。这是为什么?代码:
namespace 插入数组
{
class Program
{
static void Main(string[] args)
{
int[] myArray = new int[11];
myArray[0] = 1; myArray[1]=3;
myArray[2] = 4; myArray[3] = 7;
myArray[4] = 9; myArray[5] = 12;
myArray[6] = 17; myArray[7] = 20;
myArray[8] = 30; myArray[9] = 35;
Console.Write("请输入要插入的值: ");
int f = Convert.ToInt32(Console .ReadLine ());
int j, k;
for (k = 0; k < 10; k++)
{
if (f< myArray[k])
break;
}
for (j = 10; j >k ; j--)
{
myArray[j + 1] = myArray[j];
}
myArray[k] =f ;
Console.WriteLine("显示插入后的数组: ");
foreach (int number in myArray)
{
Console.Write(number +" ");
解决方案
循环错了
解决方案二:
第一个循环
k <10
->
k<=10
解决方案三:
int[] myArray = {1,3,4,7,9,12,17,20,30,35};
int f = int.Parse(Console.ReadLine());
myArray = myArray.Where(x => x < f).Concat(new int[] { f }).Concat(myArray.Where(x => x >= f)).ToArray();
Console.WriteLine("插入后");
foreach (int x in myArray)
Console.Write(x + " ");
解决方案四:
http://ideone.com/Bhbt8J
解决方案五:
我的程序也没有任何问题
using System;
using System.Linq;
public class Test
{
public static void Main()
{
int[] myArray = {1,3,4,7,9,12,17,20,30,35};
Console.Write("请输入要插入的值:");
int f = int.Parse(Console.ReadLine());
myArray = myArray.Where(x => x < f).Concat(new int[] { f }).Concat(myArray.Where(x => x >= f)).ToArray();
Console.WriteLine("显示插入后的数组:");
foreach (int x in myArray)
Console.Write(x + " ");
}
}
解决方案六:
数组插入数据
解决方案七:
k
->
k<=10
解决方案八:
还有,以后问问题,请贴代码,而不是截图,这样好帮你调试。
解决方案九:
想想,当j=10的时候,j+1是多少?你的数组是11个元素,下标从0开始,最多到10,j+1是11是不是越界了,多看书
解决方案十:
想想,当j=10的时候,j+1是多少?你的数组是11个元素,下标从0开始,最多到10,j+1是11是不是越界了,多看书
时间: 2025-01-24 05:01:17