解决  记录列表不起't从txt文件中取出值,循环未运行。

cfrank2000

活跃的成员
加入
3月6日,2021年
消息
34
编程经验
Beginner
我尝试在记录列表中从文本文件中读取“记录数据”。不幸的是,循环不起作用和其他事情可能不起作用,请帮帮我,谢谢,弗兰克。

hotelorder1:
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;

namespace szalloda1
{
    public class pitypang00
    {
        public int foglaloszam = 0;
        public int szobaszam = 0;
        public int erkezesinapsorszama = 0;
        public int tavozasinapsorszam = 0;
        public int vendegszam = 0;
        public int kernekreggelit = 0;
        public string vendegazonosito = " ";

    }
    class Program
    {
        

        static void Main(string[] args)
        {
            string olvas = @"c:\Users\Public\textfiles\pitypang.txt";
            List<pitypang00> adatok = new List<pitypang00>();
            int i = 0;
            int i2 = 0;
            int kod0 = 0;
            int utolso = 0;
            try
            {
                
                // Open the text file using a stream reader.
                using (var sr = new StreamReader(olvas, Encoding.Default))
                {
                    // Read the stream as a string, and write the string to the console.
                    //Console.WriteLine(sr.ReadToEnd());
                    while (!sr.EndOfStream)
                    {

                       
 string sor = sr.ReadLine();
                        string[] record = sor.Split(' ');

                        adatok.Add(new pitypang00());
                        if (i == 0) { kod0 = Convert.ToInt32(record[0]); }
                        else
                        {
                            adatok[i].foglaloszam = Convert.ToInt32(record[1]);
                            adatok[i].szobaszam = Convert.ToInt32(record[2]);
                            adatok[i].erkezesinapsorszama = Convert.ToInt32(record[3]);
                            adatok[i].tavozasinapsorszam = Convert.ToInt32(record[4]);
                            adatok[i].vendegszam = Convert.ToInt32(record[5]);
                            adatok[i].kernekreggelit = Convert.ToInt32(record[6]);
                            adatok[i].vendegazonosito = record[7];
                            utolso++;
                            Console.WriteLine(i+" "+ record[7]);
                            i++;
                        }
                    }
                    sr.Close();
                    
                    for (i2 = 1; i2 <= utolso; i2++){
                        Console.WriteLine(
                            " Foglaloszam  "+ adatok[i].foglaloszam+
                            " Szobaszam    "+ adatok[i].szobaszam+
                            " Erkezesinap\n sorszama "+ adatok[i].erkezesinapsorszama);
                    }
                }
            }
            catch (IOException e)
            {
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            Console.WriteLine(" Test "+utolso+ adatok[i].vendegazonosito);
        }
    }
}
 

附件

  • pitypang.txt.
    31.8 KB · Views: 4

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,887
地点
切萨皮克,va.
编程经验
10+
Just scanning through your code, it looks like i will always be zero and so you'll never ever update your utolso past zero.
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,158
地点
挪威
编程经验
10+
你有I ++在else块(不是i == 0),所以它不会更新。
拆分记录是索引[0-6],您尝试读取[1-7]。
 

cfrank2000

活跃的成员
加入
3月6日,2021年
消息
34
编程经验
Beginner
你有I ++在else块(不是i == 0),所以它不会更新。
拆分记录是索引[0-6],您尝试读取[1-7]。
谢谢你的帮助。我== 0是一个比较,我不明白,以及如何增加?我理解拆分记录,但我的第一个值是984,一个单一的数据,所以在这件事上需要帮助,谢谢。
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,158
地点
挪威
编程经验
10+
这是您的代码:
C#:
if (i == 0) 
{  
   kod0 = Convert.ToInt32(record[0]); 
}
else 
{ 
   i++; 
}
 

cfrank2000

活跃的成员
加入
3月6日,2021年
消息
34
编程经验
Beginner
This is your code:
C#:
if (i == 0)
{ 
   kod0 = Convert.ToInt32(record[0]);
}
else
{
   i++;
}
谢谢你的帮助。我设法运行第一部分:从记录列表中的TXT文件中读取数据,但第二部分用于工作和显示的循环,没有,给出错误消息。你能帮我吗 ?索引有问题。谢谢,弗兰克。
hotelorder1:
 while (!sr.EndOfStream)
                    {

                        string sor = sr.ReadLine();
                        string[] record = sor.Split(' ');

                        adatok.Add(new pitypang00());
                        if (i == 0) { kod0 = Convert.ToInt32(record[0]); }
                        else
                        {
                            adatok[i].foglaloszam = Convert.ToInt32(record[0]);
                            adatok[i].szobaszam = Convert.ToInt32(record[1]);
                            adatok[i].erkezesinapsorszama = Convert.ToInt32(record[2]);
                            adatok[i].tavozasinapsorszam = Convert.ToInt32(record[3]);
                            adatok[i].vendegszam = Convert.ToInt32(record[4]);
                            adatok[i].kernekreggelit = Convert.ToInt32(record[5]);
                            adatok[i].vendegazonosito = record[6];
                            //i=0;
                            Console.WriteLine(" i " + i +" " + adatok[i].foglaloszam + " " + record[6] + " " + adatok[i].szobaszam + " " + adatok[i].erkezesinapsorszama);

                        }
                        i++;
                        if (i == 1) { Console.WriteLine(" i " + i + " " + kod0); }
                        
                    }
                    utolso=i;
                    Console.WriteLine(" utolso " + utolso);
                    sr.Close();
                    
                        for (i2 = 0; i2 < utolso; i2++)
                        {
                        if (i == 0)
                        {
                            Console.WriteLine(" Vendeg szam  " + kod0);
                        }
                        else
                        {
                            Console.WriteLine(
                                " Foglaloszam  " + adatok[i].foglaloszam +
                                " Szobaszam    " + adatok[i].szobaszam +
                                " Erkezesinap\n sorszama " + adatok[i].erkezesinapsorszama);
                        }
                    }
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,158
地点
挪威
编程经验
10+
您的第二个循环索引是I2。
 
最佳 底部