我需要编写一个程序,询问用户2到12之间的数字,然后显示一个乘法表,其中的答案格式如下:
用户输入:6 输出:
2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36
我无法得到,在WPF应用程序屏幕上显示的顶部水平行(2,3,4,5,6)和左列(2,3,4,5,6),我也需要使垂直标签正确,因此所有数字在水平和垂直方向上均匀分布。我目前的代码如下:
int inputNumber;
public MainWindow()
{
InitializeComponent();
btnYes.IsEnabled = false;
}
private void calculateTable_Click(object sender, RoutedEventArgs e)
{
inputNumber = int.Parse(number.Text);
if (inputNumber < 2 || inputNumber > 12)
{
MessageBox.Show("Please enter values between 2 and 12");
number.Clear();
return;
}
for (int i = 2; i <= inputNumber; i++)
{
for (int j = 2; j <= inputNumber; j++)
{
displayValues.Text += (i * j).ToString() + '\t';
}
displayValues.Text += '\n';
}
calculateTable.IsEnabled = false;
btnYes.IsEnabled = true;
}
private void btnYes_Click(object sender, RoutedEventArgs e)
{
number.Clear();
number.Focus();
displayValues.Text = String.Empty;
btnYes.IsEnabled = false;
calculateTable.IsEnabled = true;
}
private void btnNo_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
答案 0 :(得分:0)
您的一个问题是您忘记打印ì
-loop迭代的第一个数字。对于换行,您还可以使用Environment.NewLine
我在这里使用TextBox
进行显示。
试试这个:
int inputNumber = 6;
for (int i = 2; i <= inputNumber; i++)
{
textBox.Text += i.ToString() + '\t';
for (int j = 2; j <= inputNumber; j++)
{
textBox.Text += (i * j).ToString() + '\t';
}
textBox.Text += Environment.NewLine;
}
结果如下:
对于这样的inputNumber = 12
:
希望这会有所帮助。
修改强>
编辑完成后我明白你了解一点。
要获取第一行,您只需要将{2}中的枚举包含在前导空格inputNumber
的{{1}}中。对于垂直对齐,你可以做一点作弊并取3 " "
s,这将与标签在空间上相同。
这是一个示例代码:
NewLine
结果现在看起来像这样:
答案 1 :(得分:0)
最简单有意义的方法:
使用UniformGrid
作为<UniformGrid x:Name="UG" Columns="10"/>
,代码:
int from = 2, to = 15;
for (int i = from; i <= to; ++i)
{
for (int j = 1; j <= 10; ++j)
{
TextBlock tb = new TextBlock() { Text = (i * j).ToString() };
UG.Children.Add(tb);
}
}
还有其他方法:
为每个表创建一个StackPanel
Orientation = Horizontal
。每个数字都使用TextBlock
。
创建一个包含10列的Grid
。您的列是固定的,但行数会有所不同。因此,您可以创建所需的行,并显示相关列中的每个数字。使用RowDefinition,Grid.SetRow()和Grid.SetColumn()。
使用DataGrid
并将其设为ReadOnly
。创建列表,并将其简单地指定为DataGrid.ItemsSource
。您可以格式化DataGrid
以隐藏各种行等。
答案 2 :(得分:0)
我需要从我的程序中获得的答案应采用以下格式: Multiplication Tables from 2 to 12
我得到最左边的列(2到8)和结果,但不是顶行(2到8)和数字之间的垂直间距。所有数字必须在网格中均匀分布/分布。