2017-09-19 4 views
0

Was ich versuche, ist die Eingabe von Daten in die leeren Arrays mithilfe eines Formular-Textfelds. Das Formular zeigt das erste Array an (Werte sind bereits eingegeben), es akzeptiert jedoch nicht die Werte, die in das Textfeld eingegeben werden. Egal welchen Wert ich einstelle, es postet 0,00 in der ganzen Reihe. Es wird nicht einmal einen Namen (String) aufnehmen. Kann mir jemand in die richtige Richtung weisen?C# Leeres Array akzeptiert keine Eingabe

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; 

namespace WP_Week3_Part1 
{ 
    public partial class ArrayForm : Form 
    { 
     int[] deptArray = new int[5] { 1, 2, 3, 4, 5 }; 
     double[] contArray = new double[5] { 0, 0, 0, 0, 0}; 
     string[] nameArray = new string[5] { "", "", "", "", "" }; 
     public ArrayForm() 
     { 
      InitializeComponent(); 
     } 

     private void buttonValue_Click(object sender, EventArgs e) 
     { 
      int dept; 
      dept = Convert.ToInt32(textBoxDept.Text); 
      double cont; 
      cont = Convert.ToDouble(textBoxCont.Text); 
      textBoxDept.Text = ""; 
      textBoxCont.Text = ""; 
      textBoxDonor.Text = ""; 
      labelOutput.Text = "Printing Contribution Table \n dept   amount   donor"; 
      for (int i = 0; i < deptArray.Length; i = i + 1) 
      { 
       nameArray[i] = textBoxDonor.Text; 
       labelOutput.Text += String.Format("\n {0}   {1}   {2} ", deptArray[i], contArray[i].ToString("C"), nameArray[i]); 
      } 

     } 
    } 
} 
+0

1- Sie löschen 'textBoxDonor.Text', bevor Sie dem Array zugewiesen werden. 2-Sie fügen nichts zu 'contArray' noch' deptArray' hinzu 3- Sie überschreiben jedes 'nameArray' bei jedem Drücken der Taste. – Gusman

+0

Nehmen Sie die Eingabe von der TextBox auf buttonValue_Click? Wenn dies der Fall ist, setzen Sie die Eigenschaft .Text auf eine leere Zeichenkette zurück. Das heißt natürlich 0. – Inisheer

Antwort

1

Sie haben zwei Probleme:

  1. Sie erhalten den cont Wert und dann nichts tun mit ihm. Sie drucken contArray[i], aber das ist nicht nach der Initialisierung auf 0 zugewiesen, so dass es natürlich immer 0 druckt. Nicht sicher, was die Logik ist angenommen auf Ihren Code basieren, aber drucken Sie entweder cont oder zuweisen die Array-Mitglied (en) .

  2. Sie löschen das Spendertextfeld (textBoxDoneor.Text = ""), bevor Sie es in der Schleife for verwenden. Wenn Sie also das Element nameArray zuweisen, weisen Sie immer die leere Zeichenfolge zu. Sie weisen auch immer jedem Mitglied des Arrays zu, nicht sicher, ob das beabsichtigt ist oder Sie mit Ihrem Programm noch nicht so weit gekommen sind.

+0

1. Wo initialisiere ich con auf 0? – Bob

+0

so das Setzen der drei textBox.Text = "" löscht sie? – Bob

+0

@Bob Sie setzen es auf 0 in der contArray-Initialisierung, und wenn Sie es auf "" setzen, wird es gelöscht. – BradleyDotNET

1

Es gibt $0.00 weil:

Sie Ihren Text gesetzt textBoxDonor

zu leeren es so sein sollte:

  int dept; 
      dept = Convert.ToInt32(textBoxDept.Text); 
      double cont; 
      cont = Convert.ToDouble(textBoxCont.Text); 
      //textBoxDept.Text = ""; 
      //textBoxCont.Text = ""; 
      //textBoxDonor.Text = ""; 
      labelOutput.Text = "Printing Contribution Table \n dept   amount   donor"; 
      for (int i = 0; i < deptArray.Length; i = i + 1) 
      { 
       nameArray[i] = textBoxDonor.Text; 
       labelOutput.Text += String.Format("\n {0}   {1}   {2} ", deptArray[i], contArray[i].ToString("C"), nameArray[i]); 


    } 

Überprüfen Sie den Inhalt Ihrer nameArray direkt nach der Ausführung

 string arrlist = string.Empty; 
     foreach (var arr in nameArray.ToList()) 
     { 
      arrlist = arrlist +' ' + arr.ToString(); 
     } 
     MessageBox.Show(arrlist); 
+0

Ich reparierte, was jeder zu suggerieren scheint, aber jetzt, was auch immer ich gebe, d. H. 10.00 und Bob füllt jede Reihe. – Bob

+0

Ja, es füllt absolut jede Zeile, weil Ihr 'nameArray' nur vom Inhalt Ihres' textBoxDonor' abhängt. Meine Frage ist, was genau Sie mit diesem NamenArray machen wollen? '. –

+0

Ich möchte mein leeres Array aktualisieren – Bob

Verwandte Themen