[VB.net] Array komplett auslesen

atlantyz

Erfahrenes Mitglied
Hi!

Ich habe ein Array n, mit 16 Plätzen. Diese werden nach und nach vom Programm befüllt. Nun soll ganz zum Schluss eine Summe aus diesen Werten errechnet werden, aber nur, wenn alle Werte größer 1 sind (also praktisch, wenn kein Feld leer ist, n ist nämlich einfach nur ein Zähler für verschiedene Funktionen).

Zuerst hatte ich nur ein 5er Array. Da habe ich dann gesagt
If n(1) and n(2) and (n3) usw. > 1 then Summe berechnen

Aber ich möchte jetzt eigentlich nicht 16 Array Felder mit AND verknüpfen... da bin ich ja ewig dran.

Gibt es einen Befehl, der einfach schaut, ob alle Felder im Array > 1 sind?

LG Joey
 
Naja im normalfall würdest du doch einen Array der größe nach durch eine Schleife auslesen.
In Pseudocode würde das so aussehen (kann VB.Net nicht)

Code:
int Summe =0;

for(int i=0; i < Array.Anzahl, i++)
{
   if(Array[i] > 1)
  {
    Summe = Summe + Array[i];
  }
}

Schreib das in VB.NET und es müsste klappen.
 
Hallo.

Mag jetzt nicht irgendwie VB.net zusammenklecksen, deswegen in C#.

Einfach das Array in einer Schleife durchgehen. Falls eine Zahl ungültig ist, setzt du eine boolsche Variable auf false, und brichst die Schleife ab.

In der Schleife kannst auch gleich die Summe addieren, damit du nicht nachher noch eine Schleife brauchst. Die boolsche Variable gibt dir dabei an, ob die Summe korrekt ist, oder nicht.

lg, Alex

C#:
int[] numbers= new int[] { 1, 2, 3, 4, 5 };

bool valid = true;
int count = 0;

for (int i = 0; i < numbers.length; i++)
{
  if (numbers[i] <= 1)
  {
    valid = false; // eine zahl kleiner als 1 - Daten "ungültig"
    break; // schleife abbrechen..
  }
  count += numbers[i];
}
 
Okay, ich habe versuch die Schleife in VB.net nachzubauen. Aber ich bekomms nicht hin.
Für was steht denn bei dir "numbers"? Ist das mein Array?

Bisher lautet meine Schleife so:

Dim valid As Boolean = True
Dim i As Integer
For i = 0 To n.Length
If n(i) <= 1 Then valid = False : Exit For
If valid = True Then summe1 = summe1 + n(i)
Next

Aber irgendwie setzt der jetzt valid immer auf false. Ich blick nicht durch. Also, mein Array heißt n mit dem Index 0-5.
 
Zum Glück haben wir ja einen C#-to-VB.net Converter verlinkt, hab mein Snippet mal übersetzt, und auch ausprobiert.

C#:
Dim numbers As Integer() = New Integer() {5, 2, 3, 4, 5}

Dim valid As Boolean = True
Dim count As Integer = 0
For i As Integer = 0 To numbers.Length - 1

	If numbers(i) <= 1 Then
		valid = False
		Exit For
	End If
	count += numbers(i)
Next

Sollte gehen, und ja, numbers ist das Array. ;)
 
Okay, danke. Das hat jetzt super funktioniert.

Nun habe ich noch eine Frage: Kann ich auch immer zwei Zahlen aus dem Array miteinander vergleichen und wenn die gleich sind, dann addieren?

Vielleicht weiß dazu auch noch jemand eine Lösung...

LG Joey
 
Ein bissl selber Nachdenken musst schon,.. und wenn du dann was willst, musst schon ein wenig genauer sein.

Hab mir halt was aus den Fingern gesaugt.. Je 2 Zahlen die hintereinander im Array stehen werden entweder Addiert oder Subtrahiert. Ausschlaggebend dafür ist, welche der beiden Zahlen größer ist.

Die einzelnen Ergebnisse werden in einer (generischen) Liste gespeichert, und zusätzlich wird auch noch alles aufsummiert.

Viel Spass.. ;)

C#
C#:
List<int> partialResult = new List<int>();

int[] numbers =new int[] { 55, 66, 99, 11, 22, 66  };

int result = 0;
int current = 0;

for (int i = 0; i < numbers.Length -1; i++)
{
  if (numbers[i] < numbers[i+1])
  {
    current = numbers[i]+numbers[i+1];
  }
  else
  {
    current = numbers[i]-numbers[i+1];
  }
  
  partialResult.Add(current);
  result += current;
}

VB.net (übersetzt)
Code:
Dim partialResult As New List(Of Integer)()

Dim numbers As Integer() = New Integer() {55, 66, 99, 11, 22, 66}

Dim result As Integer = 0
Dim current As Integer = 0
For i As Integer = 0 To numbers.Length - 2

	If numbers(i) < numbers(i + 1) Then
		current = numbers(i) + numbers(i + 1)
	Else
		current = numbers(i) - numbers(i + 1)
	End If

	partialResult.Add(current)
	result += current
Next
 

Neue Beiträge

Zurück