Я думаю, что я нашел, в чем проблема. И я думаю, что мой код терпит неудачу, когда я пытаюсь заменить значение в массиве другим значением из другого массива. Я использую цикл for, а затем обнаруживаю «i», индекс, и я пытаюсь заменить одно значение в одном массиве. В индексах есть некоторое смешение, но я не могу понять это!Заменить символ со значением в массиве символов
Что ниже, насколько я пришел.
Есть несколько норвежских слов, но не позволяйте им путать вас. И я должен сказать вам, что я пытаюсь сделать игру в палач.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
char [] arrayOrd;
char[] bokstav;
char[] byggeOrd;
protected void Page_Load(object sender, EventArgs e)
{
//Session for remembering what word is gonna be guessed
if (Session["arrayOrd"] != null)
{
arrayOrd = (char[])Session["arrayOrd"];
}
//This session contains the underscores
if (Session["byggeOrd"] != null) {
byggeOrd = (char[])Session["byggeOrd"];
}
}
protected void Page_Unload(object sender, EventArgs e)
{
Session["arrayOrd"] = arrayOrd;
Session["byggeOrd"] = byggeOrd;
}
protected void btnStart_Click(object sender, EventArgs e)
{
string ord = txtOrd.Text.ToLower();
arrayOrd = ord.ToCharArray();//Puts text from a textbox to an array called arrayOrd
List<char> list = new List<char>();
for (int i = 0; i < arrayOrd.Length; i++) {//Put underscores for as long arrayOrd is in a list.
labRiktigBokstav.Text += "_ ";
list.Add('_');
}
byggeOrd = list.ToArray(); //Put's the list that contains underscores in an array
}
//Checking if a letter is in the word
protected void btnSjekkOrd_Click(object sender, EventArgs e)
{
string BSjekk = txtBokstavSjekk.Text.ToLower();
bokstav = BSjekk.ToCharArray();
if (arrayOrd.Contains(bokstav[0]))
{
for (int i = 0; i < arrayOrd.Length; i++)
{
if (arrayOrd[i] == bokstav[0])
{
byggeOrd[Array.IndexOf(byggeOrd, byggeOrd[i])] = arrayOrd[i]; //I think there is something wrong here!!!!!
string resultat = new string(byggeOrd);
labRiktigBokstav.Text = resultat;
}
}
}
else
{
//Print out that the guessed letter is wrong
}
}
}
Эта линия является избыточным: byggeOrd [Array.indexOf (byggeOrd, byggeOrd [я])]. Вы получаете индекс значения через свой индекс. Вы можете заменить его byggeOrd [i]. Какие именно результаты вы получаете и чего хотите достичь? – rla4
@ rla4 Извините, это вполне может быть ответом на дальнейший осмотр. Ваш ответ был сформулирован так, как будто это было просто предложение о пересмотре кода, а не ответ на этот вопрос. – TyCobb
У меня есть массив с символами подчеркивания: '_', '_'. И если пользователь угадает букву справа, индекс этого подчеркивания и индекс слова, который пользователь угадывает, будут заменены. Поэтому, если слово «автомобиль». И пользователь угадывает a, я хочу изменить «_», ** «_» **, «_» на «a». Мои результаты заключаются в том, что индексы не совпадают. Угаданные буквы не помещаются в нужный индекс и затем ошибочны. Если пользователь догадывается «c», то «r», а затем «a». Он будет отображаться как: cra, а не автомобиль. – Norveger