kleine suche

Status
Nicht offen für weitere Antworten.

ska3k

Aktives Mitglied
Hallo,
ich hab hier eine kleine Suche geschrieben, die einfach nur nach char Zeichen in einem Array sucht und die Position sind dann merkt und später ausgibt. Das Problem ist aber jetzt, dass er die wenn ein Zeichen mit der Position 4 oder mehr immer als 0 speichert. Die Positionen 1-3 speichert er problemlos im zweiten Int-Array. Könnt ihr mir vlt sagen wo mein fehler liegt?

Code:
public class suche {

  public static void main(String[] args) {
    char[] zeichen;
    int[] gefunden;
    char whl,ein;
    final byte ZU_ERZEUGENDE_ZAHLEN=20;

    
      zeichen=erzeugen(ZU_ERZEUGENDE_ZAHLEN);
      ein=input();
      gefunden=suche(ein,ZU_ERZEUGENDE_ZAHLEN,zeichen);
      ausgabe(gefunden);

     [...]
  }
    
  
  private static char[] erzeugen(byte zahlen) {
    char[] z;
    int i,n=1;
    
    
    z=new char[zahlen];
    
    do {
      if (n<10) {
        System.out.print("0"+n+" ");
      } else {
        System.out.print(n+" ");
      }

      n++;
    } while (n<=zahlen);
    
    System.out.println();
    
    for (i=0;i<=zahlen-1;i++) {
      z[i]=(char)Tools.zufall(97,122);
      System.out.print(z[i]+"  ");
    }

    return z;
  }
  
  
  private static char input() {
    char zeichen;
    
    
    System.out.println("\n\nNach welchen Zeichen soll gesucht werden?");
    System.out.print("Zeichen: ");
    zeichen=Eingabe.readChar();
    
    return zeichen;
  }
  
  
  private static int[] suche(char suche, byte ZUFALL, char[] zeichen) {
    int[] ein;
    byte i,n=0;
    
    
    for (i=0;i<ZUFALL;i++) {
      if (zeichen[i]==suche) {
        n++;
      }
    }
    ein=new int[n];
    n=0;
    for (i=0;i<=ein.length;i++) {
      if (suche==zeichen[i]) {
        ein[n]=i;
        System.out.println(i+"| ");   //Zum testen
        n++;
      }
    }

    return ein;
  }
  
  
  private static void ausgabe(int[] g) {
    int i;

    i=0;
    System.out.print("\nGefunden auf Position: ");
    do {
      if (g[i]+1<10) {
        System.out.print("0"+(g[i]+1)+" ");
      } else {
        System.out.print(g[i]+1+" ");
      }
      i++;
    } while (i<g.length);
  }
}


Vielen Dank für eure Hilfe, weiß echt nicht wo der Fehler ist.

Mfg ska3k
 
S

SlaterB

Gast
die suche entweder so:

Code:
private static int[] suche(char suche, byte ZUFALL, char[] zeichen) {
		int[] ein;
		byte i, n = 0;

		for (i = 0; i < ZUFALL; i++) {
			if (zeichen[i] == suche) {
				n++;
			}
		}
		ein = new int[n];
		n = 0;
		for (i = 0; i < ein.length; i++) {
			for (int j = 0; j < ZUFALL; j++) {
				if (zeichen[j] == suche) {
					ein[n] = j;
					System.out.println(j + "| ");
					n++;
				}
			}
		}

		return ein;
	}

oder etwas übersichtlicher


Code:
	private static int[] suche(char suche, byte ZUFALL, char[] zeichen) {
		List l = new ArrayList();
		for (int i = 0; i < ZUFALL; i++) {
			if (zeichen[i] == suche) {
				l.add(Integer.valueOf(i));
			}
		}
		int[] erg = new int[l.size()];
		for (int i = 0; i < erg.length; i++) {
			erg[i] = ((Integer)l.get(i)).intValue();
		}

		return erg;
	}

das beste wäre, wenn du ganz mit einer Liste beliebiger Größe statt mit einem Array arbeiten würdest,
in der Ausgabe musst du auf jeden Fall noch abfangen, dass das Array vielleicht leer ist
 

Ariol

Top Contributor
Du hier statt
Code:
for (i = 0; i <= ein.length; i++)
		{
		...
		{

das schreiben
Code:
for (i = 0; i < ZUFALL; i++)
		{
		...
		{



Hab deinen Code aber mal komplett überarbeitet (Groß-/Kleinschreibung angepasst, unnötige Variablen rausgenommen, do-while zu for-Schleifen umgewandelt, und deine bytes durch ints ersetzt.)

Code:
import java.util.Scanner;

public class Suche
{

	public static void main(String[] args)
	{
		int zuErzeugendeZahlen = 20;

		char[] zeichen = erzeugen(zuErzeugendeZahlen);
		char ein = input();
		int[] gefunden = suche(ein, zuErzeugendeZahlen, zeichen);
		ausgabe(gefunden);

		// [...]
	}

	private static char[] erzeugen(int zahlen)
	{
		char[] z = new char[zahlen];

		for (int i = 0; i < zahlen; i++)
		{
			if (i + 1 < 10)
			{
				System.out.print("0" + (i + 1) + " ");
			}
			else
			{
				System.out.print((i + 1) + " ");
			}
		}

		System.out.println();

		for (int i = 0; i < zahlen; i++)
		{
			z[i] = (char) Tools.zufall(97, 122);
			System.out.print(z[i] + "  ");
		}

		return z;
	}

	private static char input()
	{
		System.out.println("\n\nNach welchen Zeichen soll gesucht werden?");
		System.out.print("Zeichen: ");

		char zeichen = Eingabe.readChar();

		return zeichen;
	}

	private static int[] suche(char suche, int zufall, char[] zeichen)
	{
		int n = 0;

		for (int i = 0; i < zufall; i++)
		{
			if (zeichen[i] == suche)
			{
				n++;
			}
		}

		int[] ein = new int[n];
		n = 0;

		for (int i = 0; i < zufall; i++)
		{
			if (suche == zeichen[i])
			{
				ein[n] = i;
				System.out.println(i + "| "); // Zum testen
				n++;
			}
		}

		return ein;
	}

	private static void ausgabe(int[] g)
	{
		System.out.print("\nGefunden auf Position: ");

		for (int i = 0; i < g.length; i++)
		{
			if (g[i] + 1 < 10)
			{
				System.out.print("0" + (g[i] + 1) + " ");
			}
			else
			{
				System.out.print(g[i] + 1 + " ");
			}
		}
	}
}

EDIT: noch nen Fehler ausgebessert
 

ska3k

Aktives Mitglied
@SlaterB
Wenn ich deinen ersten Code einfüge, dann klappt der fast. Wenn z.b. in der letzten Komponete bei dir die gesuchte char ist und noch in irgend einer anderen dann kommt der Fehler ArrayIndexOutOfBoundsException Warum muss der in der for-Scheife dann noch eine for-Schleife durchführen? Könntest du das noch erläutern?
Wenn ich den zweiten bekomm ich auch Errors, aber er Klasse List nicht findet. Muss ich da vorher noch was importieren? Mit einer Arrayliste hab ich aber bis jetzt noch nicht gearbeitet.

Die Abfrage wenn das Array leer ist kommt noch, soweit war ich noch nicht ;)


@Ariol
Wenn ich "for (i = 0; i < zeichen.length; i++)" einfach bekomm ich den typischen Error, das er auf eine Komponente außerhalb des Arrays zugreifen will.

Bei deinem zweiten Code, wo du das Prog überarbeitet hast, für was musst du da die Scanner Klasse importieren? DIe wird doch nirgends gebraucht. Und bei dir in der Zeile 9 soll eine final variable sein, da dass ein fester Wert ist. Deswegen hab ich den den mofier final gegeben.
 

Ariol

Top Contributor
ska3k hat gesagt.:
@Ariol
Wenn ich "for (i = 0; i < zeichen.length; i++)" einfach bekomm ich den typischen Error, das er auf eine Komponente außerhalb des Arrays zugreifen will.

und an welcher Stelle?
ska3k hat gesagt.:
Bei deinem zweiten Code, wo du das Prog überarbeitet hast, für was musst du da die Scanner Klasse importieren? DIe wird doch nirgends gebraucht. Und bei dir in der Zeile 9 soll eine final variable sein, da dass ein fester Wert ist. Deswegen hab ich den den mofier final gegeben.

Scanner ist noch ein Überbleibsel von mir. Ich hab ja keine Klasse Eingabe und musste etwas improvisieren.
Mit dem final hast du natürlich recht, da war ich wohl etwas zu schnell.

Funktioniert mein 2. Code bei dir?
 

ska3k

Aktives Mitglied
Jap, der geht wunderbar. Die Überprüfung ob evtl. das Array leer ist, ist bei dir aber nocvh nicht drin?
 

dabidu

Aktives Mitglied
Ich hab versucht den Quelltext auszuprobieren, hab aber Fehlermeldung bekommen und weiss nicht, wie ich das abarbeiten soll.


Fehlermeldung:

symbol : variable Tools
location: class Suche
z = (char) Tools.zufall(97, 122);
^
Suche.java:38: inconvertible types
found : Tools.zufall
required: char
z = (char) Tools.zufall(97, 122);
 

Ariol

Top Contributor
jap, du hast keine Tools-Klasse.

Versuchs so:

Code:
import java.util.Scanner;

public class Suche
{

	public static void main(String[] args)
	{
		int zuErzeugendeZahlen = 20;

		char[] zeichen = erzeugen(zuErzeugendeZahlen);
		char ein = input();
		int[] gefunden = suche(ein, zuErzeugendeZahlen, zeichen);
		ausgabe(gefunden);

		// [...]
	}

	private static char[] erzeugen(int zahlen)
	{
		char[] z = new char[zahlen];

		for (int i = 0; i < zahlen; i++)
		{
			if (i + 1 < 10)
			{
				System.out.print("0" + (i + 1) + " ");
			}
			else
			{
				System.out.print((i + 1) + " ");
			}
		}

		System.out.println();

		for (int i = 0; i < zahlen; i++)
		{
			z[i] = (char)(Math.random()*26 + 97);//(char) Tools.zufall(97, 122);
			System.out.print(z[i] + "  ");
		}

		return z;
	}

	private static char input()
	{
		System.out.println("\n\nNach welchen Zeichen soll gesucht werden?");
		System.out.print("Zeichen: ");

		char zeichen = new Scanner(System.in).next().charAt(0);//Eingabe.readChar();

		return zeichen;
	}

	private static int[] suche(char suche, int zufall, char[] zeichen)
	{
		int n = 0;

		for (int i = 0; i < zufall; i++)
		{
			if (zeichen[i] == suche)
			{
				n++;
			}
		}

		int[] ein = new int[n];
		n = 0;

		for (int i = 0; i < zeichen.length; i++)
		{
			if (suche == zeichen[i])
			{
				ein[n] = i;
				System.out.println(i + "| "); // Zum testen
				n++;
			}
		}

		return ein;
	}

	private static void ausgabe(int[] g)
	{
		System.out.print("\nGefunden auf Position: ");

		for (int i = 0; i < g.length; i++)
		{
			if (g[i] + 1 < 10)
			{
				System.out.print("0" + (g[i] + 1) + " ");
			}
			else
			{
				System.out.print(g[i] + 1 + " ");
			}
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
K Hallo, Ich suche kleine Java Program-Aufgaben zum üben ? Java Basics - Anfänger-Themen 4
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
S Kleine Frage zu Threads Java Basics - Anfänger-Themen 3
T Klassen Kleine Übung zum Thema Klassen Java Basics - Anfänger-Themen 3
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
O Kleine Frage zu cast Java Basics - Anfänger-Themen 3
U DOM Parser, kleine Frage Java Basics - Anfänger-Themen 29
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
TheSorm Kleine Speicher Klasse Java Basics - Anfänger-Themen 24
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
T Kleine Klausurfragen Java Basics - Anfänger-Themen 17
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
Q Vererbung Kleine Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 5
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
O Konsole - Kleine Frage Java Basics - Anfänger-Themen 22
N kleine get-Methode anhand einer Aufgabenstellung Java Basics - Anfänger-Themen 13
D Kleine Rechenregel... ++a Java Basics - Anfänger-Themen 4
ScottGambler Kleine Frage Java Basics - Anfänger-Themen 13
M Erste Schritte 2 Kleine Programme Java Basics - Anfänger-Themen 27
T Kleine Frage Java Basics - Anfänger-Themen 2
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
A Java Flächeninhaltsberechnung kleine Frage Java Basics - Anfänger-Themen 8
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
P eigene kleine Datenverwaltung Java Basics - Anfänger-Themen 5
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
S Erste Schritte Zwei kleine Fragen zu [], int und Konstruktor Java Basics - Anfänger-Themen 3
S Erste Schritte Kleine Problem mit Ausgabe in eine Datei Java Basics - Anfänger-Themen 11
G Kleine Java Programme aus Main Java Programm starten..... Java Basics - Anfänger-Themen 3
R Sehr kleine doubles nicht in Exponentialdarstellung ausgeben Java Basics - Anfänger-Themen 3
O kleine SwingFrame Java Basics - Anfänger-Themen 3
T Kleine Frage zu Collections Java Basics - Anfänger-Themen 3
J BlueJ! 2 kleine Fragen zum Spiel. Java Basics - Anfänger-Themen 3
J Kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
H Warum funktioniert diese kleine Methode nicht? Java Basics - Anfänger-Themen 8
E Kleine Hilfe für einen Einsteiger Java Basics - Anfänger-Themen 18
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
M kleine Verständisfrage zur Klassenhierarchie, speziel JMenuItem Java Basics - Anfänger-Themen 8
J Kleine Frage zu Methoden & OOP Java Basics - Anfänger-Themen 4
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
S 2 kleine Methoden negieren und print Java Basics - Anfänger-Themen 8
J if und kleine double Werte Java Basics - Anfänger-Themen 7
H kleine zwischenfrage string Java Basics - Anfänger-Themen 3
ModellbahnerTT Kleine Frage zu doppelten Arrays Java Basics - Anfänger-Themen 3
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
M Kleine Konsole mit Threads + KeyAdapter Java Basics - Anfänger-Themen 6
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
hdi kleine Verständnisfrage lokale + Member Variable Java Basics - Anfänger-Themen 10
R Kleine Frage zu Array Java Basics - Anfänger-Themen 2
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
G eine kleine verwaltung Java Basics - Anfänger-Themen 2
M Eine kleine Frage bzw kleine Theorie frage String[arg] Java Basics - Anfänger-Themen 6
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
M Kleine Anfängerfrage Java Basics - Anfänger-Themen 10
D kleine Passwortabfrage erstellen incl. Method zum verändern Java Basics - Anfänger-Themen 7
G jFTP - kleine Fragen Java Basics - Anfänger-Themen 2
P Eine kleine Frage. Java Basics - Anfänger-Themen 4
M kleine sql abfrage Frage Java Basics - Anfänger-Themen 5
K Kleine Fragen über Arrays Java Basics - Anfänger-Themen 8
Z kleine frage zu: Runtime.getRuntime().exec("cmd /c) Java Basics - Anfänger-Themen 3
M Zufallszahl - kleine Frage Java Basics - Anfänger-Themen 4
D kleine spielerei mit swing Java Basics - Anfänger-Themen 5
A Kleine Tabelle . Java Basics - Anfänger-Themen 8
U kleine datenbank Java Basics - Anfänger-Themen 86
G kleine Frage Java Basics - Anfänger-Themen 4
Q Wie kann man eine kleine pause im Programm machen? Java Basics - Anfänger-Themen 13
J Kleine Connection Frage Java Basics - Anfänger-Themen 4
J kleine java aufgabe: ausgabe von sternchen Java Basics - Anfänger-Themen 20
P kleine db-aufgabe läuft nur suboptimal Java Basics - Anfänger-Themen 8
S ein paar kleine Fragen Java Basics - Anfänger-Themen 4
M Kleine Frage zu If-Bedingung Java Basics - Anfänger-Themen 4
X Kleine Frage: Split Java Basics - Anfänger-Themen 13
G sehr kleine Dezimalzahlen (BigDecimal) falsch angezeigt Java Basics - Anfänger-Themen 5
G Eigene kleine Sprache entwickeln Java Basics - Anfänger-Themen 6
T Kleine Verständnissfrage Java Basics - Anfänger-Themen 7
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
A Noch ne kleine Beanshell Frage Java Basics - Anfänger-Themen 7
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
A Kleine Anfängerfragen u.a.: Kann man Random "speichern& Java Basics - Anfänger-Themen 6
I Reflection: Suche Feld + in Unterklassen Java Basics - Anfänger-Themen 7
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
M Suche Resteasy Example Java Basics - Anfänger-Themen 24
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
M binäre Suche im Intervall Java Basics - Anfänger-Themen 6
M binäre Suche Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben