Удалить с массива типа чар буквы и оставить только цифры - C#
Формулировка задачи:
Ребята подскажите плз что делать, такая задача:
Користувач вводить назву файлу на жорсткому диску. Програма знаходить добуток 1-го, 3-го та 5-го чисел з цього файлу і виводить результат на консоль.
В самом текстовом файле находится такая информация: Allo123YYu984, должно вывести 1*3*8 = 24.
Вот есть код, но он считает и буквы тоже.
try
{
StreamReader a = new StreamReader(@"D:\1.txt");
string s = a.ReadToEnd();
Console.WriteLine("{0}", s);
int x = s.Length;
int o=1;
char[] array = s.ToCharArray();
char[] mass = new char[x];
char[] tr = new char[x];
int j = 0, k;
foreach (char c in array)
{
if (Char.IsNumber(c))
{
mass[j] = c;
Console.Write("{0} ", mass[j]);
}
j++;
}
for (int i = 0; i < x; i++)
{
if ('0' <= mass[i] && mass[i] <= '9')
tr[i] = mass[i];
else
mass[i] = tr[i] ;
Console.Write("{0}", tr[i]);
}
Console.WriteLine();
Console.WriteLine("{0}", o);
Console.ReadKey();
throw new Exception("Dont have 5 numeric");
}
catch(Exception thrown)
{
Console.WriteLine(thrown.Message);
throw new Exception("Please input name on 5 numeric or more");
}Решение задачи: «Удалить с массива типа чар буквы и оставить только цифры»
textual
Листинг программы
using System;
using System.IO;
namespace CyberForum
{
public class MultiplyFirstThreeNumbersFromFile
{
public static void Main(string[] args)
{
Console.Write("Введите путь к файлу: ");
string filePath = Console.ReadLine();
if (File.Exists(filePath)) // если файл существует
{
int index = 0;
int[] numbers = new int[3]; // массив для хранения 1, 3 и 5й цифр
StreamReader reader = new StreamReader(filePath, true);
while (!reader.EndOfStream)
{
string line = reader.ReadLine(); // читаем строку из файла
for (int lineIdx = 0; lineIdx < line.Length; ++lineIdx)
{
char current = line[lineIdx];
if (char.IsDigit(current)) // проверяем, является ли текущий символ цифрой
{
int value = (current - '0'); // если да - получаем его числовое значение
// и записываем в массив в зависимости от индекса цифры в файле
switch (index)
{
case 0: numbers[0] = value; break; // 1 цифра
case 2: numbers[1] = value; break; // 3 цифра
case 4: numbers[2] = value; break; // 5 цифра
default: break;
}
++index;
}
// если дошли до 5й цифры - прерываем цикл
if (index == 5) break;
}
// дошли до 5й цифры - прерываем цикл
if (index == 5) break;
}
// обязательно закрываем reader
reader.Close();
// ну а дальше понятно
if (index == 5)
{
int mult = numbers[0] * numbers[1] * numbers[2];
Console.WriteLine("Произведение 1, 3 и 5 цифр равно {0}", mult);
}
else Console.WriteLine("В файле менее пяти цифр.");
}
else Console.WriteLine("Файл по указанному пути не существует.");
}
}
}