2016-08-31 8 views
-1

Я изучаю, как читать и писать во внешние текстовые файлы с помощью C# (да, это классная работа, теперь это невозможно), и я как бы ударил стену , Посмотрите, первая часть этого задания заключалась в создании программы, которая может записывать записи клиентов во внешний файл, после создания класса Customer с идентификационным номером, именем и полями текущего баланса, которые я сделал.Нужна помощь Вытащить данные из файла

Мое затруднение заключается в том, что теперь мне нужно создать программу для поиска файла, который я создал с помощью этого первого, и распечатать каждую строку на консоли с балансом, большим или равным минимальному балансу, предоставленному пользователем. Я рисую пробел о том, как это сделать на самом деле.

Это, насколько я получил:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using static System.Console; 
using System.IO; 

namespace FindCustomerRecords2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Intialize variables 
      double minBal; 
      string line; 

      //Prompt user to enter minimum balance and store in minBal 
      Write("Please enter a minimum balance to pull up\n" + 
        "all customers that owe at least that much."); 
      minBal = Convert.ToDouble(ReadLine()); 

      //Open data stream to CustomerRecords.txt 
      StreamReader file = new StreamReader(@"H:\C#\Visual C# 2015\Ch. 14 - Files and Streams\CustomerRecords.txt"); 
      //Loop through CustomerRecords.txt, find values 
      //greater than or euqal to minBal, and display 
      //each line with such a value 
      while((line = file.ReadLine()) != null) 
      { 

      } 
     } 
    } 
} 

Теперь я не ищу, чтобы кормить ответ, я просто действительно не знаю, что использовать для достижения того, что я имею попросили сделать. Любой, кто хочет помочь мне?

EDIT: В конце концов я узнал, что я делаю неправильно. Для будущей ссылки любого, у кого может быть такая же проблема в будущем: я получил ее для работы, используя Split(), чтобы назначить данные массиву, называемым полями, а затем назначил каждому положению полей поля переменные, называемые id, name, и баланс, и сравнили каждый баланс minBal в, если заявление так:

fields = recordIn.Split(DELIM); 
 
       id = Convert.ToInt32(fields[0]); 
 
       name = fields[1]; 
 
       balance = Convert.ToDouble(fields[2]);

Спасибо всем, кто ответил.

+0

Как выглядит файл? –

+0

Когда вы отлаживаете это, каково значение 'line' в этом цикле? Он содержит значение, которое вы пытаетесь сравнить? – David

+0

@Joe Healy Это простой текстовый файл CSV с некоторыми поддельными значениями в нем. 45454, Гленн Matthews, 54,87 10000, Джерри Райс, 150,45 58546, Klein Botteau, 45 Это все содержимое прямо там, насколько я добавил. Первое приложение принимает вход пользователя, использует его для создания объекта из класса Customer, который я создал, а затем передает значения из объекта в файл CustomerRecords.txt. –

ответ

0

Присмотритесь внутри вашего время цикла:

while((line = file.ReadLine()) != null) 
{ 

} 

в этой точке внутри цикла, вы должны иметь следующие данные:

45454, Glenn Matthews, 54.87

Если нет, то вы неправильно созданный файл CSV. Предположим, что вы создали его правильно. Как бы вы хотели получить значение из своей переменной line, чтобы сравнить ее с вашей переменной minBal? Если вы можете понять эту часть, то вы, вероятно, можете решить все остальное самостоятельно.

Какие инструменты (такие как строковые методы) у вас есть в вашем распоряжении, которые могли бы помочь в этом?

Также могут быть методы Stream/StreamReader, которые также могут помочь вам. Удачи!

+0

Как вы упомянули в комментарии выше, эта глава посвящена методу Split(), да. Сторонние библиотеки, не так много ... В первой версии этой программы я также использовал Contains() для извлечения данных, а Seek() также использовался в этой главе. В главе рассказывается о Filestreams и Serialization. –

Смежные вопросы