Попытка написать мой метод void как метод массива строк - PullRequest
0 голосов
/ 01 декабря 2018

Я создал метод сортировки, который принимает массив строк и сортирует его по алфавиту.Однако я создал метод void, не думая о том, что я действительно не могу записать данные метода void в файл, что я и пытаюсь сделать.Так что теперь у меня возникли проблемы с преобразованием моего метода в метод массива строк, в отличие от метода void.Может кто-нибудь, пожалуйста, укажите мне правильное направление?

public void Sort(String[] arr)
        {
            String temp = "";
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i].CompareTo(arr[j]) > 0)
                    {
                        temp = arr[j];
                        arr[j] = arr[i];
                        arr[i] = temp;
                    }
                }
                Console.WriteLine(arr[i]);
            }

        } 

обновил код с моим вызовом метода:

class InsertionSort
    {
        public static string[] Sort(String[] arr)
        {
            String temp = "";
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i].CompareTo(arr[j]) > 0)
                    {
                        temp = arr[j];
                        arr[j] = arr[i];
                        arr[i] = temp;
                    }
                }
            }
            return arr;
        }
    }
}


 class Program
    {
        static void Main(string[] args)
        {
            String[] words = File.ReadLines("jumbled english FILTERED.ALL.txt").ToArray();
            String[] sortedWords = InsertionSort.Sort(words);
            System.IO.File.WriteAllLines("sortedtext.txt", sortedWords);
        }
    }
}

мой код что он печатает

Ответы [ 4 ]

0 голосов
/ 01 декабря 2018

Зачем делать свой собственный сортировщик и не использовать Array.Sort?

var lines = new[] { "one", "two", "three", "four" }; Array.Sort(lines, StringComparer.Ordinal); System.IO.File.WriteAllLines("file.txt", lines);

0 голосов
/ 01 декабря 2018

Бен,

Позвольте мне ответить на ваш вопрос в двух частях.Во-первых, вы хотите вернуть значения из метода.Для этого вам нужно изменить возвращаемый тип на string [] и вернуть arr после обработки

public string[] Sort(string[] arr)
{
    string temp = "";
    for (int i = 0; i < arr.Length; i++)
    {
        for (int j = i + 1; j < arr.Length; j++)
        {
            if (arr[i].CompareTo(arr[j]) > 0)
            {
                temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }
    return arr;
}

Вторая часть, которую вы упомянули в комментарии, что вы хотите записать это в файл.Вы можете использовать метод System.IO.File.WriteLineAllLines для записи в файл.

    var input = new []{ "First line", "Third line" , "Second line" };
    string[] lines = Sort(input);
    System.IO.File.WriteAllLines(@"OutputFile.txt", lines);

Чтобы узнать больше о записи содержимого в файл, пожалуйста, см.

0 голосов
/ 01 декабря 2018

Я не знаю, почему вы создаете такой метод, поскольку у нас уже есть linq, чтобы сделать это

Вы можете сделать это так.Я надеюсь, что это сработает для вас.

        string[] words = { "India", "England", "America", "China", "Australia" };
        string[] Ascending =  words.OrderBy(c => c).Select(c=>c).ToArray(); // Ascending order
        string[] Descending = words.OrderByDescending(c => c).Select(c => c).ToArray(); // Ascending order
        foreach (var item in Ascending)
        {
            Console.WriteLine(item);
        }

        foreach (var item in Descending)
        {
            Console.WriteLine(item);
        }
0 голосов
/ 01 декабря 2018
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            String[] arr = new String[3];
            arr[0] = "B";
            arr[1] = "C";
            arr[2] = "A";

            Console.WriteLine(arr[0]);
            Console.WriteLine(arr[1]);
            Console.WriteLine(arr[2]);

            Sort(arr);

            Console.WriteLine(arr[0]);
            Console.WriteLine(arr[1]);
            Console.WriteLine(arr[2]);

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Test\Result.txt"))
            {
                foreach (string str in arr)
                {
                    file.WriteLine(str);
                }
            }

            Console.ReadLine();
        }

        public static void Sort(String[] arr)
        {
            String temp = "";
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i].CompareTo(arr[j]) > 0)
                    {
                        temp = arr[j];
                        arr[j] = arr[i];
                        arr[i] = temp;
                    }
                }
                //Console.WriteLine(arr[i]);
            }

        }
    }
}

Результат:

enter image description here

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