簡體   English   中英

用char數組中的值替換char

[英]Replace char with value in char array

我想我發現了問題所在。 而且我認為當我嘗試用另一個數組中的另一個值替換數組中的值時,我的代碼失敗。 我使用一個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[i])] 

您正在通過值的索引獲取值的索引。

int ind = Array.IndexOf(byggeOrd, byggeOrd[i]); 

上面的代碼可以檢索任何索引。 這就是為什么它可以修改意外值的原因。 您應該將其替換為

if (arrayOrd[i] == bokstav[0]){
    byggeOrd[i]= arrayOrd[i]; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM