我在小数按钮上做错了什么,好像我的闹钟响了
本文关键字:我的 闹钟 什么 小数 按钮 错了 | 更新日期: 2023-09-27 18:30:07
我不明白我在dotButton中做错了什么,它显示了它,但没有给出正确的结果?有什么建议吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool isFirst = true;
private bool shouldClear = true;
private double num1;
private double num2;
private double result = 0;
private string symbol = string.Empty;
private bool hasDecimal = false;
private void numberButton_Click(object sender, EventArgs e)
{
Button sourceButton = (sender as Button);
double oldNumber, buttonNumber, newNumber;
if (shouldClear)
{
outputTextbox.Clear();
oldNumber = 0;
shouldClear = false;
}
else
{
oldNumber = double.Parse(outputTextbox.Text);
hasDecimal = true;
}
buttonNumber = Double.Parse(sourceButton.Text);
newNumber = (oldNumber * 10) + buttonNumber;
if (isFirst)
{
num1 = newNumber;
}
else
{
num2 = newNumber;
}
outputTextbox.Text += sourceButton.Text;
Calculate(symbol);
}
private void Calculate(string operatorSymbol)
{
if (isFirst)
{
result = num1;
return;
}
switch (operatorSymbol)
{
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
}
private void operatorButton_Click(object sender, EventArgs e)
{
num1 = result;
Button sourceButton = (sender as Button);
string operatorSymbol = sourceButton.Text;
if (isFirst)
isFirst = false;
hasDecimal = true;
shouldClear = true;
symbol = operatorSymbol;
outputTextbox.Text = result.ToString();
}
private void equalsButton_Click(object sender, EventArgs e)
{
outputTextbox.Text = result.ToString();
isFirst = true;
shouldClear = true;
hasDecimal = true;
}
private void clearButton_Click(object sender, EventArgs e)
{
outputTextbox.Text = "0";
result = 0;
isFirst = true;
shouldClear = true;
hasDecimal = false;
}
private void dotButton_Click(object sender, EventArgs e)
{
if (hasDecimal)
hasDecimal = true;
isFirst = false;
shouldClear = true;
outputTextbox.Text = dotButton.Text;
}
}
}
namespace WindowsFormsApplication2
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.zeroButton = new System.Windows.Forms.Button();
this.oneButton = new System.Windows.Forms.Button();
this.twoButton = new System.Windows.Forms.Button();
this.threeButton = new System.Windows.Forms.Button();
this.fourButton = new System.Windows.Forms.Button();
this.fiveButton = new System.Windows.Forms.Button();
this.sixButton = new System.Windows.Forms.Button();
this.sevenButton = new System.Windows.Forms.Button();
this.eightButton = new System.Windows.Forms.Button();
this.nineButton = new System.Windows.Forms.Button();
this.dotButton = new System.Windows.Forms.Button();
this.addButton = new System.Windows.Forms.Button();
this.subtractButton = new System.Windows.Forms.Button();
this.multiplyButton = new System.Windows.Forms.Button();
this.divideButton = new System.Windows.Forms.Button();
this.clearButton = new System.Windows.Forms.Button();
this.equalsButton = new System.Windows.Forms.Button();
this.outputTextbox = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// zeroButton
//
this.zeroButton.Location = new System.Drawing.Point(9, 230);
this.zeroButton.Margin = new System.Windows.Forms.Padding(2);
this.zeroButton.Name = "zeroButton";
this.zeroButton.Size = new System.Drawing.Size(58, 41);
this.zeroButton.TabIndex = 0;
this.zeroButton.Text = "0";
this.zeroButton.UseVisualStyleBackColor = true;
this.zeroButton.Click += new System.EventHandler(this.numberButton_Click);
//
// oneButton
//
this.oneButton.Location = new System.Drawing.Point(9, 184);
this.oneButton.Margin = new System.Windows.Forms.Padding(2);
this.oneButton.Name = "oneButton";
this.oneButton.Size = new System.Drawing.Size(38, 41);
this.oneButton.TabIndex = 1;
this.oneButton.Text = "1";
this.oneButton.UseVisualStyleBackColor = true;
this.oneButton.Click += new System.EventHandler(this.numberButton_Click);
//
// twoButton
//
this.twoButton.Location = new System.Drawing.Point(51, 184);
this.twoButton.Margin = new System.Windows.Forms.Padding(2);
this.twoButton.Name = "twoButton";
this.twoButton.Size = new System.Drawing.Size(38, 41);
this.twoButton.TabIndex = 2;
this.twoButton.Text = "2";
this.twoButton.UseVisualStyleBackColor = true;
this.twoButton.Click += new System.EventHandler(this.numberButton_Click);
//
// threeButton
//
this.threeButton.Location = new System.Drawing.Point(93, 184);
this.threeButton.Margin = new System.Windows.Forms.Padding(2);
this.threeButton.Name = "threeButton";
this.threeButton.Size = new System.Drawing.Size(38, 41);
this.threeButton.TabIndex = 3;
this.threeButton.Text = "3";
this.threeButton.UseVisualStyleBackColor = true;
this.threeButton.Click += new System.EventHandler(this.numberButton_Click);
//
// fourButton
//
this.fourButton.Location = new System.Drawing.Point(9, 139);
this.fourButton.Margin = new System.Windows.Forms.Padding(2);
this.fourButton.Name = "fourButton";
this.fourButton.Size = new System.Drawing.Size(38, 41);
this.fourButton.TabIndex = 4;
this.fourButton.Text = "4";
this.fourButton.UseVisualStyleBackColor = true;
this.fourButton.Click += new System.EventHandler(this.numberButton_Click);
//
// fiveButton
//
this.fiveButton.Location = new System.Drawing.Point(51, 139);
this.fiveButton.Margin = new System.Windows.Forms.Padding(2);
this.fiveButton.Name = "fiveButton";
this.fiveButton.Size = new System.Drawing.Size(38, 41);
this.fiveButton.TabIndex = 5;
this.fiveButton.Text = "5";
this.fiveButton.UseVisualStyleBackColor = true;
this.fiveButton.Click += new System.EventHandler(this.numberButton_Click);
//
// sixButton
//
this.sixButton.Location = new System.Drawing.Point(93, 139);
this.sixButton.Margin = new System.Windows.Forms.Padding(2);
this.sixButton.Name = "sixButton";
this.sixButton.Size = new System.Drawing.Size(38, 41);
this.sixButton.TabIndex = 6;
this.sixButton.Text = "6";
this.sixButton.UseVisualStyleBackColor = true;
this.sixButton.Click += new System.EventHandler(this.numberButton_Click);
//
// sevenButton
//
this.sevenButton.Location = new System.Drawing.Point(9, 93);
this.sevenButton.Margin = new System.Windows.Forms.Padding(2);
this.sevenButton.Name = "sevenButton";
this.sevenButton.Size = new System.Drawing.Size(38, 41);
this.sevenButton.TabIndex = 7;
this.sevenButton.Text = "7";
this.sevenButton.UseVisualStyleBackColor = true;
this.sevenButton.Click += new System.EventHandler(this.numberButton_Click);
//
// eightButton
//
this.eightButton.Location = new System.Drawing.Point(51, 93);
this.eightButton.Margin = new System.Windows.Forms.Padding(2);
this.eightButton.Name = "eightButton";
this.eightButton.Size = new System.Drawing.Size(38, 41);
this.eightButton.TabIndex = 8;
this.eightButton.Text = "8";
this.eightButton.UseVisualStyleBackColor = true;
this.eightButton.Click += new System.EventHandler(this.numberButton_Click);
//
// nineButton
//
this.nineButton.Location = new System.Drawing.Point(93, 93);
this.nineButton.Margin = new System.Windows.Forms.Padding(2);
this.nineButton.Name = "nineButton";
this.nineButton.Size = new System.Drawing.Size(38, 41);
this.nineButton.TabIndex = 9;
this.nineButton.Text = "9";
this.nineButton.UseVisualStyleBackColor = true;
this.nineButton.Click += new System.EventHandler(this.numberButton_Click);
//
// dotButton
//
this.dotButton.Location = new System.Drawing.Point(72, 230);
this.dotButton.Margin = new System.Windows.Forms.Padding(2);
this.dotButton.Name = "dotButton";
this.dotButton.Size = new System.Drawing.Size(58, 41);
this.dotButton.TabIndex = 10;
this.dotButton.Text = ".";
this.dotButton.UseVisualStyleBackColor = true;
this.dotButton.Click += new System.EventHandler(this.dotButton_Click);
//
// addButton
//
this.addButton.Location = new System.Drawing.Point(135, 230);
this.addButton.Margin = new System.Windows.Forms.Padding(2);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(38, 41);
this.addButton.TabIndex = 11;
this.addButton.Text = "+";
this.addButton.UseVisualStyleBackColor = true;
this.addButton.Click += new System.EventHandler(this.operatorButton_Click);
//
// subtractButton
//
this.subtractButton.Location = new System.Drawing.Point(135, 184);
this.subtractButton.Margin = new System.Windows.Forms.Padding(2);
this.subtractButton.Name = "subtractButton";
this.subtractButton.Size = new System.Drawing.Size(38, 41);
this.subtractButton.TabIndex = 12;
this.subtractButton.Text = "-";
this.subtractButton.UseVisualStyleBackColor = true;
this.subtractButton.Click += new System.EventHandler(this.operatorButton_Click);
//
// multiplyButton
//
this.multiplyButton.Location = new System.Drawing.Point(135, 139);
this.multiplyButton.Margin = new System.Windows.Forms.Padding(2);
this.multiplyButton.Name = "multiplyButton";
this.multiplyButton.Size = new System.Drawing.Size(38, 41);
this.multiplyButton.TabIndex = 13;
this.multiplyButton.Text = "*";
this.multiplyButton.UseVisualStyleBackColor = true;
this.multiplyButton.Click += new System.EventHandler(this.operatorButton_Click);
//
// divideButton
//
this.divideButton.Location = new System.Drawing.Point(135, 93);
this.divideButton.Margin = new System.Windows.Forms.Padding(2);
this.divideButton.Name = "divideButton";
this.divideButton.Size = new System.Drawing.Size(38, 41);
this.divideButton.TabIndex = 14;
this.divideButton.Text = "/";
this.divideButton.UseVisualStyleBackColor = true;
this.divideButton.Click += new System.EventHandler(this.operatorButton_Click);
//
// clearButton
//
this.clearButton.Location = new System.Drawing.Point(9, 48);
this.clearButton.Margin = new System.Windows.Forms.Padding(2);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(80, 41);
this.clearButton.TabIndex = 15;
this.clearButton.Text = "Clear";
this.clearButton.UseVisualStyleBackColor = true;
this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
//
// equalsButton
//
this.equalsButton.Location = new System.Drawing.Point(93, 48);
this.equalsButton.Margin = new System.Windows.Forms.Padding(2);
this.equalsButton.Name = "equalsButton";
this.equalsButton.Size = new System.Drawing.Size(80, 41);
this.equalsButton.TabIndex = 16;
this.equalsButton.Text = "=";
this.equalsButton.UseVisualStyleBackColor = true;
this.equalsButton.Click += new System.EventHandler(this.equalsButton_Click);
//
// outputTextbox
//
this.outputTextbox.Location = new System.Drawing.Point(9, 3);
this.outputTextbox.Margin = new System.Windows.Forms.Padding(2);
this.outputTextbox.Multiline = true;
this.outputTextbox.Name = "outputTextbox";
this.outputTextbox.Size = new System.Drawing.Size(164, 41);
this.outputTextbox.TabIndex = 17;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(184, 280);
this.Controls.Add(this.outputTextbox);
this.Controls.Add(this.equalsButton);
this.Controls.Add(this.clearButton);
this.Controls.Add(this.divideButton);
this.Controls.Add(this.multiplyButton);
this.Controls.Add(this.subtractButton);
this.Controls.Add(this.addButton);
this.Controls.Add(this.dotButton);
this.Controls.Add(this.nineButton);
this.Controls.Add(this.eightButton);
this.Controls.Add(this.sevenButton);
this.Controls.Add(this.sixButton);
this.Controls.Add(this.fiveButton);
this.Controls.Add(this.fourButton);
this.Controls.Add(this.threeButton);
this.Controls.Add(this.twoButton);
this.Controls.Add(this.oneButton);
this.Controls.Add(this.zeroButton);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button zeroButton;
private System.Windows.Forms.Button oneButton;
private System.Windows.Forms.Button twoButton;
private System.Windows.Forms.Button threeButton;
private System.Windows.Forms.Button fourButton;
private System.Windows.Forms.Button fiveButton;
private System.Windows.Forms.Button sixButton;
private System.Windows.Forms.Button sevenButton;
private System.Windows.Forms.Button eightButton;
private System.Windows.Forms.Button nineButton;
private System.Windows.Forms.Button dotButton;
private System.Windows.Forms.Button addButton;
private System.Windows.Forms.Button subtractButton;
private System.Windows.Forms.Button multiplyButton;
private System.Windows.Forms.Button divideButton;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Button equalsButton;
private System.Windows.Forms.TextBox outputTextbox;
}
}
我怀疑你想要
outputTextbox.Text += dotButton.Text;
(您错过了+
)
在dotButton_Click
的方法中,boolean
shouldClear
设置为true
:
private void dotButton_Click(object sender, EventArgs e)
{
if (hasDecimal)
hasDecimal = true;
isFirst = false;
shouldClear = true;
outputTextbox.Text += dotButton.Text;
}
将其更改为false
。
并且:outputTextbox.Text += dotButton.Text;
与+=
,而不仅仅是=
。
以下线路出现问题:
buttonNumber = Double.Parse(sourceButton.Text);
newNumber = (oldNumber*10) + buttonNumber;
你为什么要乘以10?
这里似乎有很多逻辑有点混乱,我已经解决了你需要调试代码并逐步完成它的第一个问题。你会看到事件的顺序不是你想要的。这里有太多的事情要改变,需要重写,我相信你会想自己做,而不是让我为你做。。。即使我有时间。