Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一组值范围中的数组值为';t显示_C#_Arrays - Fatal编程技术网

C# 一组值范围中的数组值为';t显示

C# 一组值范围中的数组值为';t显示,c#,arrays,C#,Arrays,我正在尝试制作一个简单的程序,根据客户购买的商品数量显示折扣 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication11 { class Program { const int SIZE = 4; static void Main(string[] args)

我正在尝试制作一个简单的程序,根据客户购买的商品数量显示折扣

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
    class Program
    {
        const int SIZE = 4;
        static void Main(string[] args)
        {
            int itemsbought = 0;
            double discountItem = 0;
            int[] items = new int[SIZE] { 0, 10, 26, 61 };
            double[] discount = new double[SIZE] { 0.0, 0.05, 0.10, 0.15 };

            InputItems(ref itemsbought);
            getDiscount(items, discount, ref itemsbought, ref discountItem);

            Console.WriteLine("Your discount is {0}", discountItem);

        }

        private static void getDiscount(int[] items, double[] discount, ref int itemsbought, ref double discountItem)
        {
            int idx = 0;
            for (idx = 1; idx >= items.Length; idx++)
            {
                while (itemsbought >= items[idx])
                {
                    discountItem = discount[idx];
                    idx++;
                }
            }
        }
        private static void InputItems(ref int itemsbought)
        {
            Console.WriteLine("Enter the amount of items you bought");
            while (!int.TryParse(Console.ReadLine(), out itemsbought))
                Console.WriteLine("Error, whole numbers only");
        }
    }
}

不知何故,我知道这其中的逻辑是非常糟糕的,但我不确定。主题一当然是显示与输入一致的折扣。无论输入什么值,它都只显示“折扣为0”

您的
for
循环完全错误。首先,它没有执行,因为您的条件是
idx>=items.Length。它应该是相反的:
idx。其次,我不知道为什么要在初始值设定项中将
idx
设置为
1


内部while循环可能也不能满足您的要求,但我甚至不确定您首先希望它做什么。

您需要修复循环条件检查部分,它使用的是故障逻辑
idx>=items.Length应该是
idx

c#中的数组具有从零开始的索引,因此,它必须以
idx=0
开头

for (idx = 0; idx < items.Length; idx++)
{
    while (itemsbought >= items[idx])
    {
        discountItem = discount[idx];
        idx++;
    }
}
for(idx=0;idx=items[idx])
{
折扣项目=折扣[idx];
idx++;
}
}