Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
VariablenSchleifenzähler hat einen anderen wert nach der schleife :(
Hallo
ich habe ein programm geschrieben das eine zahl im array sucht und die dann auch ausgeben sollte...das problem ist aber, dass die variable int i die der schleifenzähler ist, in der ausgabe(außerhalb der for schleife) nicht das ausgibt was es sollte
Ich hoffe ihr könnt mir weiterhelfen, ich habe schon alles möglich ausprobiert,aber es gelang mir nicht :bahnhof:, im world wide web bin ich auch nicht fündig geworden
Bester Dank im Voraus
Code:
Java:
import java.util.Random;
import javax.swing.JOptionPane;
public class Arrsearch {
public static void main(String[] args) {
// Variablen Deklaration:
String s1, s2;
int arrmax, xzahl, i = 0;
boolean b=false;
// Eingabe des Arraymaximums mit Überprüfung:
s1 = JOptionPane.showInputDialog("Geben Sie die Größe des Arrays an:");
try {
Integer.parseInt(s1);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null,"Geben Sie bitte einen gültigen Wert ein :" );
s1 = JOptionPane.showInputDialog("Geben Sie die Größe des Arrays an:");
}arrmax = Integer.parseInt(s1);
// Eingabe des Maximums der Zufallszahl mit Überprüfung:
s2 = JOptionPane.showInputDialog("Geben Sie die zu suchende Zahl ein");
try {
Integer.parseInt(s1);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null,"Geben Sie bitte einen gültigen Wert ein :" );
s2 = JOptionPane.showInputDialog("Geben Sie den Maximalwert der Zufallszahl ein:");
}xzahl = Integer.parseInt(s2);
int[] v = new int[arrmax]; // Dem Array wird sein Maximum zu gewiesen
for(; i < arrmax; i++){
Random zufall = new Random();
v[i] = zufall.nextInt(4 );
System.out.println("v[" +i +"] = " + v[i]);
if(xzahl==v[i]){
b=true;
}
}
if(b=true){
System.out.println(i);
}
if(b=false){
System.out.println("Die Zahl wurde nicht gefunden");
}
}
}
Ja, genau du musst die entweder i merken in einer anderen Variable und sie am Ende ausgeben oder sie in der Schleife ausgeben, weil sich i in jedem Schleifendurchlauf erhöht, also hast du nach der Schleife immer das i-Maximum.
Try/Catch sind dafür da um Fehler abzufangen, d.h. im Catch werden die Fehler gefangen und da muss also schon ein Fehler aufgetreten sein, dann ist es sinnfrei einen Wert einzugeben.
Und wie schon erwähnt wurde wenn du zwei Variablen im if vergleichen willst musst du == verwenden mit = weißt du den Variablen einen Wert zu.
Mfg
Die Suche nach dem in dem Code gleicht der nach der Nadel im Heuhaufen.
verstehe das jetzt so:
In einem Array sind Elemente. Ein bestimmtes Element soll gesucht werden. Dazu sollen zufällige Indices erzeugt werden, die innerhalb der Arraygrenzen liegen. Wenn ein Element eines solchen Index mit dem gesuchten Element übereinstimmt, soll der Index ausgegeben werden.
Java:
int[] array = {7, 5, 3, 1}; // zb
int element = 3; // zb
boolean flag = true;
int index = -1;
while (flag) {
index = (int) (Math.random() * array.length);
if (array[index] == element) {
flag = false;
}
}
System.out.println("element: " + element);
System.out.println("index: " + index);
System.out.println("array[" + index + "]: " + array[index]);
Didaktisch zwar wertlos aber sonst ist die Lösung ende Woche noch nicht gefunden.
Die Variable "position" verwende ich nur, weil sonst ausserhalb der Schleife erst 1 von i abgezogen werden muss, da i bereits hochgezählt wurde und das etwas verwirrend aussieht.
Schleifenabbruch wäre allenfalls auch mit
Code:
position != -1
möglich, aber booleans gefallen mir da besser.
Java:
public class ArraySuche{
static int[] arr = {1,2,3,4,5,6,7};
public static void main(String[] args) {
int suchWert = 5;
int position = -1;
int i = -1;
boolean found = false;
for (i = 0; (i<arr.length && !found); i++) {
if (arr[i] == suchWert) {
position = i;
found = true;
}
}
if (found) {
System.out.println("Der Wert " + suchWert + " wurde auf Position " + position + " gefunden");
} else {
System.out.println("Der Wert " + suchWert + " wurde nicht gefunden");
}
}
}
Den boolean-Flag brauchst du dabei eigentlich gar nicht:
Java:
public class ArraySuche{
static int[] arr = {1,2,3,4,5,6,7};
public static void main(String[] args) {
int suchWert = 5;
int position = -1;
for (int i = 0; i<arr.length; i++) {
if (arr[i] == suchWert) {
position = i;
break;
}
}
if (position!=-1) {
System.out.println("Der Wert " + suchWert + " wurde auf Position " + position + " gefunden");
} else {
System.out.println("Der Wert " + suchWert + " wurde nicht gefunden");
}
}
}