Red de conocimientos turísticos - Información de alquiler - Hola, me gustaría preguntar ¿cómo hacer una calculadora en c#?

Hola, me gustaría preguntar ¿cómo hacer una calculadora en c#?

¿Cómo debería decirlo? Simplemente hacer una adición requiere un código largo. Al diseñar, debe considerar que no puede presionarlo repetidamente. No puede presionar el signo "=" repetidamente. Cuando aparezca el signo "+=", preste atención a cómo manejar las excepciones. Al calcular un dato (por ejemplo: ?1+23+345+456+567=DSSF), se producirá una excepción cuando la suma continúe (es decir, cuando ocurra =+) (esto se refiere al uso de List<> genéricos para almacenar datos).

En cuanto a por qué se utilizan genéricos, es para evitar problemas de desbordamiento encontrados durante la conversión de tipos.

---------------------- El siguiente es uno de mis registros anteriores---------- --- -------------------------

usando?Sistema;

usando?Sistema ¿Usar?Sistema. ;

Usar ?System.Data;

Usar ?System.Drawing;

Usar ?System.Linq;

Usar?Linq ;

usando?System.Text;

usando?System.Windows.Forms;

espacio de nombres?SetSoftInfo//?Operación adicional?

{

públicopartial?clase?Form1?:?Formulario

{

público?Form1()

{

InitializeComponent();

}

privado?Lista?G_list?=?newList();

//?

//?¿Está permitido presionar el símbolo ?+, verdadero significa permitido

//?

private?bool?B_add?=?true;

//?

//?¿Está permitido presionar =?

//?

privado?bool?B_equ?=?true;

cadena?digital?=?"0";

privado?void?Form1_Load(objeto?remitente,?EventArgs?e)

{

}

privado?void?btn_1_Click(objeto ?remitente,? EventArgs ?e)

{

entrada("1");

}

pública?void?entrada (string?str)

{

if?(B_equ)?//?¿Si no está presionado?

Si?(B_equ) ///?No.

{

si?(string.Compare(str, ?" 0")? >=? 0&&?string.Compare("9",?str)>=?0)?//? ¿Es la clave numérica

{

this.tb_v.Text?+=? str ;?//?Cuadro de texto para mostrar resultados

digital?+=?str;

B_add?=?true;

B_equ?=?true

}

Si?(str?==?"" +")

{

si?(B_add)< / p>

{

this.tb_v.Text?+=?str;

G_list.Add(double.Parse(digital));

digital?=?"0";

B_add?=?false;

B_equ?=?true;

}

Si ?(str?==?"=")

{

si?(G_list.Cou

nt?=?0)

{

si?(B_equ?==?true)

{

B_add?= ? verdadero;

B_equ?=?false;

si?(str?! =?" +")

{

G_list .Add(double.Parse(digital));

}

double?//?result

foreach(double?db?in?G_list)

{

valor?+=?db;

this.tb_v.Text?=?valor.ToString();

}

digital?=??"0";

G_list.Clear();

G_list.Add(valor);

}

}

else?//?Click=9?=?9=?9=?9=El cuadro de resultados muestra 999, no 9?Compare(" 9", ?str)>=?0)

this.tb_v.Text?+=?str;

B_equ?=?false;

}

}

}

>else?//?Si presiona el símbolo ? =, solo habrá un número en el cuadro de resultados. Pulsar una tecla numérica se tratará como un recálculo.

{

si?(str?==?" +")

{

B_equ?=?true;

p>

entrada(cadena);

}

if?(cadena.Compare(cadena,?" 0")? >=?0&&? string.Compare(" 9",?str)>=?0)?//? Es una clave numérica

{

G_list.Clear();?// Borrar el list

this.tb_v.Clear(); ?//?Borrar el cuadro de texto del resultado

B_equ?=?true;

input(str);

}

}

}

privado?void?btn_2_Click(objeto?remitente,?EventArgs?e)

{This.tb_v. Clear();?p>

{

entrada("2");

}

privado?void?btn_3_Click(objeto?remitente,?EventArgs?e)

{

entrada("3");

}

p>privado?void?button4_Click( objeto?remitente,?EventArgs?e)

{

entrada("4");

}

privado?void? btn_5_Click(objeto? remitente,?EventArgs? e)

{

entrada("5");

}

privado?

{

Entrada ("6");

}

privado?void?btn_7_Click (remitente del objeto, parámetros del evento, e)

{

Entrada ("7");

}

¿privado?void? btn_8_Click(remitente del objeto, parámetros del evento, e)

{

Entrada ("8");

}

¿privado?

{

entrada("8");

}

privado?void?btn_9_Click(objeto?remitente,?EventArgs?e )

{

entrada("9");

}

privado?void?btn_0_Click(objeto?

{

Entrada("0");

}

privado?void?btn_add_Click(objeto?remitente,?EventArgs?e)

{

Entrada ("+");

}

privado?void?btn_eq _Click(objeto?remitente,?EventArgs?e )

{

entrada("=");

}

privado?void?Clear();

}

}

Todo el programa se basa principalmente en el cuidado, porque aunque es un programa de acumulación simple, hay muchos detalles en el medio.

------------------

Por ejemplo, +=?, =+?, ++, == son no gramatical.

Debe evitarse, por lo que se establecen dos variables Bool para el control global.

Parece sencillo, pero requiere pensarlo detenidamente.

Y de eso se trata la programación.

------------------

Detalles a los que se debe prestar atención al establecer el valor inicial de las variables:

Este programa se utiliza principalmente para operaciones de suma, por lo que el valor inicial debe establecerse en "?0".

----------------- -

Entonces, ¿por qué agregar una variable numérica y configurarla para que escriba una cadena? En primer lugar, debido a que el contenido del cuadro de resultados es de tipo cadena, para evitar conversiones de tipos múltiples innecesarias, se utiliza el tipo de cadena. Y, al obtener el tipo de cadena, manipular cualquier tipo de datos se vuelve más fácil. En segundo lugar, según la idea anterior al diseño, ¿por qué es necesario ingresar cada vez? Antes de cada vez que ingresa el signo "+" o "=", los últimos datos se guardarán en una lista (¿por qué usar una lista? Sin embargo, en la cadena (por ejemplo, en 1+23+233+2345+), obtener el número anterior requiere una búsqueda de cadena para encontrar las posiciones de los dos símbolos + y luego interceptar los datos entre los dos últimos ?+? números. Este proceso es inevitablemente demasiado engorroso. Entonces se me ocurrió esta idea:

¿Número?Valor inicial = "0";?Ingresar datos?A. operación; escriba?+?signo, (¿no número no modifica el valor del número?) En este punto, puede confirmar que se ha ingresado un número y el número se almacenará en Lista <>. , el número se restaurará al valor inicial

--------- ----------

Finalmente, el motivo del uso. el List<> genérico se debe a que durante el proceso de acumulación, ?int?A?+ int?B? = double?C? En muchos casos, el uso de genéricos puede evitar errores inesperados causados ​​por conversiones de tipos.