值范围集合中的数组值不显示

本文关键字:显示 数组 范围 集合 | 更新日期: 2023-09-27 18:07:24

我正在编写一个简单的程序,根据顾客购买的商品数量显示折扣。

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 < items.Length;。第二,我不确定为什么你在初始化器中将idx设置为1

内部while循环也可能不会做你想要它做的事情,但我甚至不确定你首先想要它做什么。

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

数组在c#中有从零开始的索引,所以它必须从idx = 0开始。

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