Ввод переменной в массиве не читается - PullRequest
0 голосов
/ 09 июля 2020

Ребята, я застрял на несколько часов прямо сейчас, любая помощь приветствуется. В настоящее время я создаю консольное приложение для ввода списка по варианту номер 1, а затем представляю его по варианту номер 2

Моя проблема в том, что консоль, похоже, не читает мой ввод конкретно в этой части здесь

Console.Write("Masukkan Judul".PadRight(24) + ": ");

list[list.GetUpperBound(0)].Judul = Console.ReadLine();

Я не уверен, какую часть я должен опубликовать, поэтому я скопировал весь свой код сюда

Спасибо за ваше время

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

namespace ConsoleApp2
{
    class Class1
    {
        enum Kategori
        {
            Textbook = 1, Kamus, Novel, Majalah
        }
        enum Penerbit
        {
            Gramedia = 1, Kompas, Tribun, Erlangga, Grasindo
        }
        struct Alas
        {
            public Kategori Kategori;
            public Penerbit Penerbit;
            public string Judul;
            public double Harga;
            public double Diskon;
            public double Subtotal;

        }
        static void Main(string[] args)
        {

            Alas[] list = new Alas[0];
            
            
            int pilih,jlhbuku,pil1,pil2 ;
            double Total = 0;
            Kategori Buku;
            Penerbit Editor;
            Ulang:
            Console.Clear();
            Console.Title= "Buku";
            Console.WriteLine(new string(' ', 18)+"MENU");
            Console.WriteLine(new string('=', 40));
            Console.WriteLine("1. Input Data");
            Console.WriteLine("2. Tampil Data");
            Console.WriteLine("3. Keluar");
            Console.WriteLine(new string('=', 40));
            Console.Write("Masukkan Kode [1-3] : ");
            pilih = int.Parse(Console.ReadLine());

            if (pilih ==1)
            {
                
                Array.Resize(ref list, list.Count() + 1);
                Console.Clear();
                
                Console.WriteLine(new string('=', 40));
                Console.WriteLine(new string(' ', 15) + "INPUT DATA");
                Console.WriteLine(new string('=', 40));
                Console.Write("Masukkan jumlah buku : ");
                jlhbuku = int.Parse(Console.ReadLine());

                Array.Resize(ref list, list.Count() + jlhbuku);
                for (int i = 1; i <= list.GetUpperBound(0); i++)
                {
                    Console.WriteLine("\nKategori Buku:");
                    Console.WriteLine("1. Textbook");
                    Console.WriteLine("2. Kamus");
                    Console.WriteLine("3. Novel");
                    Console.WriteLine("4. Majalah");
                    Console.Write("Masukkan Kategori [1-4] : ");
                    pil1 = int.Parse(Console.ReadLine());
                    Buku = (Kategori)pil1;
                    
                    if (pil1 == 1)
                    {
                        list[list.GetUpperBound(0)].Kategori = Kategori.Textbook;
                    }
                    if (pil1 == 2)
                    {
                        list[list.GetUpperBound(0)].Kategori = Kategori.Kamus;
                    }
                    if (pil1 == 3)
                    {
                        list[list.GetUpperBound(0)].Kategori = Kategori.Novel;
                    }
                    if (pil1 == 4)
                    {
                        list[list.GetUpperBound(0)].Kategori = Kategori.Majalah;
                    }

                    Console.WriteLine("\nPenerbit:");
                    Console.WriteLine("1. Gramedia");
                    Console.WriteLine("2. Kompas");
                    Console.WriteLine("3. Tribun");
                    Console.WriteLine("4. Erlangga");
                    Console.WriteLine("5. Grasindo");
                    Console.Write("Masukkan Penerbit [1-5] : ");
                    pil2 = int.Parse(Console.ReadLine());
                    Editor = (Penerbit)pil2;
                    
                    if (pil1 == 1)
                    {
                        list[list.GetUpperBound(0)].Penerbit = Penerbit.Gramedia;
                    }
                    if (pil1 == 2)
                    {
                        list[list.GetUpperBound(0)].Penerbit = Penerbit.Kompas;
                    }
                    if (pil1 == 3)
                    {
                        list[list.GetUpperBound(0)].Penerbit = Penerbit.Tribun;
                    }
                    if (pil1 == 4)
                    {
                        list[list.GetUpperBound(0)].Penerbit = Penerbit.Erlangga;
                    }
                    if (pil1 == 5)
                    {
                        list[list.GetUpperBound(0)].Penerbit = Penerbit.Grasindo;
                    }


                    **Console.Write("Masukkan Judul".PadRight(24) + ": ");
                    list[list.GetUpperBound(0)].Judul = Console.ReadLine();**

                    Console.Write("Masukkan Harga".PadRight(24) + ": ");
                    list[list.GetUpperBound(0)].Harga = double.Parse(Console.ReadLine());

                    Buku = (Kategori)list[list.GetUpperBound(0)].Kategori;
                    Editor = (Penerbit)list[list.GetUpperBound(0)].Penerbit;

                    list[list.GetUpperBound(0)].Diskon = 0.1* list[list.GetUpperBound(0)].Harga;
                    list[list.GetUpperBound(0)].Subtotal = list[list.GetUpperBound(0)].Harga - list[list.GetUpperBound(0)].Diskon;

                }

                goto Ulang;
            }
            if (pilih == 2)
            {
                if (list.Count() == 0) 
                { 
                    Console.WriteLine("Belum ada pesanan.");
                    Console.ReadKey();
                    goto Ulang;
                }
                else
                {
                    DateTime Date = DateTime.Now;
                    Console.Clear();
                    Console.Write("Tanggal : "+ (Date.ToString(" dd-MMMM-yyyy", new System.Globalization.CultureInfo("id-ID"))));
                    Console.WriteLine();
                    Console.WriteLine(new string('=', 80));
                    Console.WriteLine("Kategori".PadRight(10) +"Penerbit".PadRight(10) +"Judul".PadRight(15) + "Harga".PadRight(15) + "Diskon".PadRight(15) + "Subtotal");
                    

                    Console.WriteLine(new string('=', 80));
                    for (int i = 0; i < list.GetUpperBound(0); i++)
                    {
                        
                        Console.WriteLine(list[i].Kategori.ToString().PadRight(10) + list[i].Penerbit.ToString().PadRight(10) + list[i].Judul.ToString().PadRight(15) + list[i].Harga.ToString().PadRight(15) + list[i].Diskon.ToString("N2").PadRight(15) + list[i].Subtotal.ToString());
                        Total += list[i].Subtotal;
                    }

                    Console.WriteLine(new string('=', 80));
                    Console.Write(new string(' ', 57)+"Total : " + Total.ToString("Rp #.###,00"));


                    Console.ReadKey();
                    goto Ulang;

                }

            }
            if (pilih == 3)
            {
                Environment.Exit(0);
            }
            else
            {
                Console.WriteLine("Kode tidak valid.");
                Console.ReadKey();
                goto Ulang;
            }

            Console.ReadKey();
        }
    }
}

1 Ответ

0 голосов
/ 09 июля 2020

Когда вы заполняете свои данные, вы делаете это:

for (int i = 1; i <= list.GetUpperBound(0); i++)

Но когда вы печатаете свои данные, вы делаете это:

for (int i = 0; i < list.GetUpperBound(0); i++)

Следовательно, вы пытаетесь напечатать list[0], не имеющий данных. Следовательно, при доступе к строковой переменной вы получаете NullReferenceException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...