Дублирует используя Arrays и TextFile - PullRequest
0 голосов
/ 04 мая 2020

У меня проблема с выводом моего текущего кода в Unity. Я использую текстовое поле вывода для отображения количества дубликатов на число.

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

public int whatIndex,count;
public Text output;

public void Start()
{
    string Random = "";

    //reading the text file
    string Duplicates = "duplicates.txt";
    string Duplicates_Path = Application.dataPath + "/Text_Files/" + Duplicates;
    string[] Numbers = File.ReadAllLines(Duplicates_Path);

    foreach(string number in Numbers)
    {
        Random += number;
    }

    output.text = Random + "\n";

    //array for text
    for (whatIndex = 0; whatIndex < Duplicates.Length; whatIndex++)
    {
        Debug.Log(Numbers[whatIndex] + "\n");
        Debug.Log("The number " + Numbers[whatIndex].ToString() + " appears " + count + 
            " times(s)");
    }
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Как я понимаю, вы хотите подсчитать вхождение для каждого числа, которое доступно в файлах duplicate.txt. Пожалуйста, найдите код ниже, я немного подправил ваш код, например, путь к файлу и debug.log, и удалил ненужные переменные. Вы можете видеть ввод здесь и вывод здесь : пожалуйста, проголосуйте и пометьте как ответ, если сочтете это работающим.

public void Start()
    {           
        Dictionary<int, int> numberCount = new Dictionary<int, int>();
        //reading the text file
        string Duplicates = "duplicates.txt";
        string Duplicates_Path = Environment.CurrentDirectory + "\\Text_Files\\" + Duplicates;
        string[] Numbers = File.ReadAllLines(Duplicates_Path);

        foreach (string number in Numbers)
        {

            int temp = int.Parse(number);
            if (numberCount.ContainsKey(temp))
            {
                numberCount[temp] = numberCount[temp] + 1;
            }
            else
            {
                numberCount[temp] = 1;
            }               
        }

        //array for text
        foreach(KeyValuePair<int,int> item in numberCount)
        {
            Console.WriteLine("The number " + item.Key.ToString() + " appears " + item.Value.ToString() +
                " times(s)");               
        }
    }
0 голосов
/ 04 мая 2020

Я не уверен, чего вы хотите достичь, но, думаю, с вашим кодом есть некоторые проблемы (см. После кода).

Пример фрагмента:

Прежде всего, вы можно попытаться использовать этот код, чтобы получить представление об одном решении для получения дубликатов и количества дубликатов после чтения текстового файла с помощью словаря из System.Collections.Generi c:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        // String array with duplicates
        string[] Numbers = {"1","1", "2", "6","1","7","1","7","8","3"};
        Dictionary<string, int> KeyNumbersValueCount = new Dictionary<string, int>();

        foreach(string number in Numbers)
        {
            if(KeyNumbersValueCount.ContainsKey(number))
                KeyNumbersValueCount[number] += 1;
            else
                KeyNumbersValueCount.Add(number, 1);
        }   

        foreach(var NumberAndCount in KeyNumbersValueCount)
            Console.WriteLine("The number " + NumberAndCount.Key + " appears " + 
NumberAndCount.Value + " times(s)");
    }
}

пример кода выше

Открытые проблемы с вашим кодом из вопроса:

  1. Вам нужен счет? Он инициализируется, но никогда не используется

  2. Если вам не нужен "whatIndex", то вы также можете инициализировать его в течение для l oop:


for (int whatIndex = 0; whatIndex < Duplicates.Length; whatIndex++)
 {
     // do s.th.
 }

Вы пытаетесь перебрать всю длину строки "Duplicates", которая является "duplicates.txt" и, следовательно, имеет длину 14. Я думаю, вы хотите перебрать свои строки в вашем файле.

В вашем случае Random не имеет функции. Вы также можете использовать File.ReadAllText вместо File.ReadAllLines и передать его в output.text, если хотите только напечатать его. См. Ссылки Microsoft .

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