C# 等于语句返回 False
C# Equals Statement Returning False
我的 equals if 语句保持 returning false 字母猜测不是第一个字母,有人知道为什么会这样吗?我调试了很多,这就是我发现它 return 是一个错误的布尔语句的原因。我在谷歌上搜索了很多,但没有找到任何启示。前两个 if 语句 return 如果答案长度正确则为真
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace Guess_The_Word
{
public partial class Form1 : Form
{
private int wrongGuesses = 0;
private int userGuesses;
private int score = 0;
private string secretWord = String.Empty;
private string[] words;
private string currentWord = string.Empty;
private string userGuess = string.Empty;
private string userInput = string.Empty;
private string randomInput = string.Empty;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void guessBtn_Click(object sender, EventArgs e)
{
char[] userInputArray = userInputBox.Text.ToLowerInvariant().ToCharArray();
char[] currentWordCharArray = currentWord.ToLowerInvariant().ToCharArray();
//Assume that userInput would never be superior than randomCharArray
//And contain only one char
for (int i = 0; i < currentWordCharArray.Length; i++)
{
if (userInputArray.Length > 0 && userInputArray.Length > i)
if (currentWordCharArray.Length > 0 && currentWordCharArray.Length > i)
if (userInputArray[0].Equals(currentWordCharArray[i]))
{
UpdateScore();
}
}
// Clean userInput in form
userInputBox.Text = string.Empty;
}
private void resetGamebtn_Click(object sender, EventArgs e)
{
SetUpWords();
}
private void SetUpWords()
{
string path = (@"C:\commonwords.txt"); // Save the variable path with the path to the txt file
words = File.ReadAllLines(path);
int guessIndex = (new Random()).Next(words.Length);
currentWord = words[guessIndex];
wordlbl.Text = string.Empty;
for (int i = 0; i < currentWord.Length; i++)
{
wordlbl.Text += "*";
}
}
private void userInputBox_TextChanged(object sender, EventArgs e)
{
}
private void UpdateScore()
{
score++;
scorelbl.Text = Convert.ToString(score);
}
}
}
您必须保存生成的值,将for
循环改为foreach
:
for (int i = 0; i < randomArray.Length; ++i)
randomArray[i] = rand.Next(Min, Max);
foreach (int value in randomArray)
{
rand.Next(Min, Max);
}
并没有按照您的想法行事。
它不是设置那里的值,它只是遍历数组并生成一些随机数(并丢弃它们,因为你没有分配rand.Next
到任何东西)。
您需要将其替换为:
for (var i=0; i < randomArray.Length; i++)
{
randomArray[i] = rand.Next(Min, Max);
}
你没有用随机数初始化你的数组。
改变
foreach (int value in randomArray)
{
rand.Next(Min, Max);
}
至
for (var i=0; i < randomArray.Length; i++) {
randomArray[i] = rand.Next(Min, Max);
}
您的问题是因为您没有将 rand.Next()
分配给任何值。将您的 foreach
循环改为此 for
循环:
for (int i=0;i<6;i++)
{
randomArray[i] = rand.Next(Min, Max);
}
您当前的代码所做的是遍历数组中的每个元素(在本例中为 6),调用 rand.Next()
,但从不将其分配给任何元素。
我的 equals if 语句保持 returning false 字母猜测不是第一个字母,有人知道为什么会这样吗?我调试了很多,这就是我发现它 return 是一个错误的布尔语句的原因。我在谷歌上搜索了很多,但没有找到任何启示。前两个 if 语句 return 如果答案长度正确则为真
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace Guess_The_Word
{
public partial class Form1 : Form
{
private int wrongGuesses = 0;
private int userGuesses;
private int score = 0;
private string secretWord = String.Empty;
private string[] words;
private string currentWord = string.Empty;
private string userGuess = string.Empty;
private string userInput = string.Empty;
private string randomInput = string.Empty;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void guessBtn_Click(object sender, EventArgs e)
{
char[] userInputArray = userInputBox.Text.ToLowerInvariant().ToCharArray();
char[] currentWordCharArray = currentWord.ToLowerInvariant().ToCharArray();
//Assume that userInput would never be superior than randomCharArray
//And contain only one char
for (int i = 0; i < currentWordCharArray.Length; i++)
{
if (userInputArray.Length > 0 && userInputArray.Length > i)
if (currentWordCharArray.Length > 0 && currentWordCharArray.Length > i)
if (userInputArray[0].Equals(currentWordCharArray[i]))
{
UpdateScore();
}
}
// Clean userInput in form
userInputBox.Text = string.Empty;
}
private void resetGamebtn_Click(object sender, EventArgs e)
{
SetUpWords();
}
private void SetUpWords()
{
string path = (@"C:\commonwords.txt"); // Save the variable path with the path to the txt file
words = File.ReadAllLines(path);
int guessIndex = (new Random()).Next(words.Length);
currentWord = words[guessIndex];
wordlbl.Text = string.Empty;
for (int i = 0; i < currentWord.Length; i++)
{
wordlbl.Text += "*";
}
}
private void userInputBox_TextChanged(object sender, EventArgs e)
{
}
private void UpdateScore()
{
score++;
scorelbl.Text = Convert.ToString(score);
}
}
}
您必须保存生成的值,将for
循环改为foreach
:
for (int i = 0; i < randomArray.Length; ++i)
randomArray[i] = rand.Next(Min, Max);
foreach (int value in randomArray)
{
rand.Next(Min, Max);
}
并没有按照您的想法行事。
它不是设置那里的值,它只是遍历数组并生成一些随机数(并丢弃它们,因为你没有分配rand.Next
到任何东西)。
您需要将其替换为:
for (var i=0; i < randomArray.Length; i++)
{
randomArray[i] = rand.Next(Min, Max);
}
你没有用随机数初始化你的数组。 改变
foreach (int value in randomArray)
{
rand.Next(Min, Max);
}
至
for (var i=0; i < randomArray.Length; i++) {
randomArray[i] = rand.Next(Min, Max);
}
您的问题是因为您没有将 rand.Next()
分配给任何值。将您的 foreach
循环改为此 for
循环:
for (int i=0;i<6;i++)
{
randomArray[i] = rand.Next(Min, Max);
}
您当前的代码所做的是遍历数组中的每个元素(在本例中为 6),调用 rand.Next()
,但从不将其分配给任何元素。