indexOf() - was bedeutet -1 ?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!!!

da bei mir die java API nicht funktioniert und ich in internet noch nich wirklich was passendes gefunden hab seit ihr jetzt meien letzte hoffnung!!

ich verstehe einfach nicht was mit dem befehl indexOf() gemeint ist wenn dahinter sowas steht wie ==-1 oder <0

kann mir jemand weiter helfen?
 
also gibt es nur
==-1 und <0 (keine Übereinstimmung)
und
==1 und >0 (Übereinstimmung)
?

gibt es auch ==0 oder =<0 oder =>0? und wenn ja was bedeutet das?
 
Indizes beginnen mit der Zählung bei 0 (Null). Das kennst du ja auch bspw. von Arrays.
Es ist Sache des Programmierers die Abfragebedingungen zusammenzusetzen.
Eine Prüfung auf <=0 hätte nicht sehr viel Sinn. Die Abfrage der Bedingung würde immer true zurückgeben.
Eine Prüfung auf >=0 würde das genaue Gegenteil von < 0 bedeuten. Sie würde immer zu true ausgewertet werden, wenn eine Übereinstimmung gefunden wurde.
 
also. indexOf() gibt einen int wert zurück. -1 wenn keine übereinstimmung gefunden wird, ansonsten einen numerischen wert der größer oder gleich 0 ist und dir sagt, wo in einem string ein bestimmter buchstabe steckt.

Das andere sind operatoren die etwas vergleichen:

== - eine gleichheitsabfrage
<= - kleiner oder gleich
>= - größer oder gleich
< - kleiner
> - größer

"Test".indexOf('s') == -1
das ist also ein vergleich der true (wahr) oder false (falsch) zurückgibt.

Any Questions?

EDIT: btw ist indexOf() kein Befehl sondern eine Methode eines Objektes.
 
Eine Prüfung auf <=0 hätte nicht sehr viel Sinn. Die Abfrage der Bedingung würde immer true zurückgeben.
Eine Prüfung auf >=0 würde das genaue Gegenteil von < 0 bedeuten. Sie würde immer zu true ausgewertet werden, wenn eine Übereinstimmung gefunden wurde.
Das ist so nicht ganz richtig.

<= 0 würde true liefern wenn z.B. ein Buchstabe nicht oder am anfang eines Strings steht.
 
sorry dass ich mich so blöd anstelle!!!

also wenn indexOf()==-1 dann wurde ja keine Ubereinstimmung festgestellt und bei ==1 aber doch

so wenn aber indexOf()==0 da steht dann is mir nich ganz klar was daruntern zu verstehen ist es kann ja nur die beiden Möglichkeiten von ober geben oder nicht?
 
moment. wenn man indexOf() == -1 schrebt dann heißt das nicht, dass keine übereinstimmung gefunden wurde, sondern man ÜBERPRÜFT ob eine gefunden wurde.

indexOf() == 0 würde überprüfen ob ein Buchstabe direkt am anfang eines Stings steht. (...1 ob er an der zweiten stelle steht).

indexOf() >= 0 prüft ob etwas gefunden wurde
 
also noch mal langsam

bei dem programm das ich hier habe soll ein Wort eingegeben werden und dann überprüft werden ob in ihm die Zeichen ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ vorkommen alle andern sollen nicht zulässig sein. auf dem bildschirm soll dann je nach dem "Eingabe korekt" oder "Eingabe nicht korekt" ausgegeben werden.

so sieht der teil des programmes aus der mir schwirigkeiten macht:

Code:
for(i=0; i < input.length(); i++){
     if ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(input.charAt(i)) ==-1)
     break;
}

gebe ich z.B. ein Wort ein das nur Großbuchstaben hat wird "Eingabe korekt" ausgegeben und wenn ich keine Großbuchstaben oder irgendwas anderes eingebe "Eingabe nicht korekt"

schreibe ich aber ==1 dann ist egal was ich eingebe es kommt immer "Eingabe korekt" das gleiche auch mit ==0

und jetzt?

Edit: Code tags added by Stefan1200.
Bitte das nächste mal selbst machen...
 
öhm. also erstmal kann ich aus diesem bischen code nicht wirklich viel rauslesen. Der vergleich ist ja ganz nett, aber da gibt es effektiveres. Aber egal. Zeig mal n bischen mehr code. Und bitte die Codetags nicht vergessen
 
Code:
public class Test {

  public static void main(final String[] args) {

   System.out.println("Gib etwas ein.");
   String input = StdIn.readln();

   if(eingabetest(input)) {
     System.out.println("Eingabe korrekt");
   } else {
    System.out.println("ungueltige Eingabe");
   }
  }
  
  public static boolean eingabetest(String input){

  int i;
   for(i=0; i < input.length(); i++){
     if ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(input.charAt(i)) ==0)
     break;
   }

   return i==input.length();
  }
}


Edit von L-ectron-X: Code-Tags eingefügt.
 
@ Roar: nich ganz. Gr0ßbuchstaben gehen ja auch nich. Aber frag mich jetzt nich wie genau. Ich kenn mich mit regular expressions garnich aus ^^
 
bzw:

if ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(input.charAt(i)) ==-1)

oder

if ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(input.charAt(i)) ==1)
 
warum machst du da einen vergleich ob i so größ ist wie de länge des inputs? Das macht ja überhaupt keinen Sinn. Außerdem: CODETAGS BITTE.

Also so vieleicht:
Code:
public class Test {

    public static void main(final String[] args) {

        System.out.println("Gib etwas ein.");
        String input = StdIn.readln();

        if(eingabetest(input))
            System.out.println("Eingabe korrekt");
        else
            System.out.println("ungueltige Eingabe");
    }

    public static boolean eingabetest(String input){

    for(int i=0; i < input.length(); i++){   // laufe alle zeichen der eingabe durch
        if ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(input.charAt(i)) ==-1)   // wenn das zeichen nicht in dem String vorkommt
            return false; // gebe falsch zurück
    }

    return true; // wenn alles durch ist gebe wahr zurück
    }

}
 
ja dein progamm macht mehr sinn meins war halt nur die vorgabe vom lehrer

aber so ganz klar is mir das leider immer noch nich (ich hoffe die erleuchtung kommt heute noch schreib morgen darüber eine arbeit :cry: )


Dreezard hat gesagt.:
moment. wenn man indexOf() == -1 schrebt dann heißt das nicht, dass keine übereinstimmung gefunden wurde, sondern man ÜBERPRÜFT ob eine gefunden wurde.

indexOf() == 0 würde überprüfen ob ein Buchstabe direkt am anfang eines Stings steht. (...1 ob er an der zweiten stelle steht).

indexOf() >= 0 prüft ob etwas gefunden wurde


danach wurde es also heißen dass ==0 überprüft ob A am anfang meines eingegenen wortes steht?
 
Code:
String input = "BINICHDRIN"; 

java.util.List<Character> allowed = new java.util.ArrayList<Character>();
for( Character c : "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".toCharArray()){
    allowed.add(c);
}
java.util.List<Character> given = new java.util.ArrayList<Character>();
for( Character c : input.toCharArray()){
    given.add(c);
}
System.out.println(allowed.containsAll(given));

//oder

boolean alledrin = true;
for(char c : input.toCharArray()){
    alledrin = alledrin && ("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".indexOf(c) >= 0);
}
System.out.println(alledrin);
 
Nein. Nicht sorum wie du den vergleich machst.

Also angenommen wir haben einen char 'B' und einen String "ABC.
"ABC.indexOf('B') würde dir 1 rausschmeißen, weil B an zweiter stelle des Strings steht.

Wenn du überprüfen möchtest wo ein A in deinem wort steht müsstest du also schreiben:

System.out.println("A steht an der " + input.indexOf('A') + ". Stelle");
 
okay ich glaub das hab ich erstmal verstanden!!!!!!!

ich glaub ich hab das die ganze zeit mit dem == falsch verstanden weil das ja was vergleicht (aber bei java weis man ja nie obs da nich auch ein paar ausnahmen gibt)

also ich hab das "eigendliche" problem jetzt so verstanden:

==-1 wird geliefert wenn das eingegebene Wort aus mindestens einem anderen Zeichen besteht als vorher festgelegt

>=0 wird geleifert wenn das eingegebene Wort nur aus den vorher festgelegten Buchstaben besteht

richtig????
 
hab eben mal alles ausprobiert und es funktioniert wirklich!!!!!!!

also ein ganz großes dankeschön an alle!!!!!!!!!! 😀
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben