目标是通过多少测试分数从用户输入创建数组大小。然后创建一个循环,通过提示用户从0到100的每个测试分数来填充数组。 最后显示结果,通常使用另一个循环。
问题:为什么输入测试分数时会出现例子" 50"它在数组中添加了50个0元素?
任何帮助都会感激不尽,谢谢。我已经看过一些类似的帖子,但无法解决这个问题。另外,一个是西班牙语。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
// prompt user to ask how many test scores to build the size of the array
Write("How many test scores total: ");
string sSize = ReadLine();
int i = Convert.ToInt32(sSize);
int[] score = new int[i];
// create the loop of asking the test scores limited to the array sSize
for (int a = 1; a < i + 1; a++)
{
Write("Please enter a test score " + a + " from 0 to 100: ");
string testArray = ReadLine();
int g = Convert.ToInt32(testArray);
int[] tests = new int[g];
//create loop to display all test scores
foreach (var item in tests)
Console.WriteLine(item);
}
}
}
}
答案 0 :(得分:2)
int [] tests = new int [g];
在这里,您要分配用户给出的数组的大小而不是填充数组,您缺少填充语句或查询。
答案 1 :(得分:1)
因为您在循环内部创建了一个新数组,该数组是用户输入的“得分”的大小,然后您循环它。这些值都是零,因为当你创建一个数组时,它会填充类型的默认值,在本例中为0.第二个循环应该在第一个循环之后,你不应该在第一个循环内部创建数组,只需填充您创建的原始数组(score
)。
这是你真正想要的。请注意,您应该从0开始而不是1开始索引。
Write("How many test scores total: ");
string sSize = ReadLine();
int i = Convert.ToInt32(sSize);
int[] score = new int[i];
// create the loop of asking the test scores limited to the array sSize
for (int a = 0; a < i; a++)
{
Write("Please enter a test score " + (a + 1) + " from 0 to 100: ");
string testArray = ReadLine();
int g = Convert.ToInt32(testArray);
score[a] = g;
}
//create loop to display all test scores
foreach (var item in score)
Console.WriteLine(item);
您可能还需要考虑使用int.TryParse
,以便确定用户是否输入了无效值。
答案 2 :(得分:0)
我认为你复制了来自不同地方的代码片段,并且无法将它们正确地组合在一起。
您在此处创建了不需要的数组:int[] tests = new int[g];
。然后尝试使用它会使你的情况恶化。
此外,您还没有正确处理索引。当你学习编程时,使用正确的格式和好的变量名称,将帮助你更好地理解你自己的代码(可能从不同的地方放在一起) - 改进你的调试&#34;技能。
我有一个&#34;固定&#34;你的代码版本应该是不言自明的
using System;
using static System.Console;
namespace ConsoleApp3 {
class Program {
static void Main(string[] args) {
// prompt user to ask how many test scores to build the size of the array
Write("How many test scores total: ");
string testCountStr = ReadLine();
int testCount = Convert.ToInt32(testCountStr );
int[] testScores = new int[testCount];
// create the loop of asking the test scores limited to the array sSize
for (int i = 0; i < testCount; i++) {
Write($"Please enter score for test {i + 1} from 0 to 100: ");
string scoreStr = ReadLine();
int score = Convert.ToInt32(scoreStr);
if (score > 100 || score < 0) {
//TODO: handle your error
WriteLine("Invalid score. Please try again");
--i;
continue;
}
testScores[i] = score;
}
WriteLine();
// create loop to display all test scores
for (int i = 0; i < testScores.Length; ++i)
WriteLine($"Your score for test {i + 1} is {testScores[i]}");
}
}
}