Code zu sagen, ob ein string ist ein Pangram oder nicht?
import java.io.*;
import java.util.*;
public class Solution {
public static final int n = 26;
public int check(String arr) {
if (arr.length() < n) {
return -1;
}
for (char c = 'A'; c <= 'Z'; c++) {
if ((arr.indexOf(c) < 0) && (arr.indexOf((char)(c + 32)) < 0)) {
return -1;
}
}
return 1;
}
}
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
String s = s1.next();
Solution obj = new Solution();
int d = obj.check(s);
if (d == -1) {
System.out.print("not pangram");
} else {
System.out.print("pangram");
}
}
Wenn die Zeichenfolge eingetragen ist:
Wir zeitnah beurteilt Antike Elfenbein-Schnallen für den nächsten Preis
Wird es geben, die falsch Ausgabe:
nicht pangram.
Ich bin nicht in der Lage, um herauszufinden, was falsch mit dem code.
Vielen Dank im Voraus!
- Lassen Sie den code Debuggen, warum die check-Methode -1 zurück? Sie kehrte -1 auf mehreren stellen. Als Sie Ihre Antwort.
- der erste return ist, wenn die Länge meiner Strings ist weniger als 26 Zeichen lang sein .. so kann es nicht sein, pangram, wenn die Länge ist mehr, dann geht es auf und überprüfen Sie, ob alle Alphabete sind in der string ist oder nicht .. wenn es nicht -1 zurück, wenn am Ende der gut läuft durch die Zeichenfolge 1 zurück
- Möglich, Duplikat der Prüfen, ob string alle Buchstaben des Alphabets
- nicht wirklich. Die vorgeschlagene doppelte fragt für jeden Algorithmus; OP hat, aber es enthält Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Leerzeichen ist ein separator für
Scanner.next()
. Also, wenn du inputWe promptly judged antique ivory buckles for the next prize
,s
zeigen wird, nur um den stringWe
. Wenn Sie anrufenobj.check(s)
aufWe
es zurück-1
.Überprüfen, ob dies der Fall ist, können Sie drucken
s
und überprüfen Sie deren Wert. Sie können auch tun:Call
obj.check(s)
und sehen, dass es wird wieder die richtige Antwort.Um es zu beheben, sollten Sie rufen Sie
Scanner.nextLine()
stattScanner.next()
:}
Andere version:
Einen anderen, Ähnlichen Lösung für Ihr problem.
Referenz , siehe diesen link http://techno-terminal.blogspot.in/2015/11/java-program-to-check-if-given-string.html
Dieses Problem beheben sollte:
import java.io.;
import java.util.;
public class Lösung {
}
Anderen Ansatz, dies zu tun
Versuchen Sie es
Anderen einfachen Programm mit HashSet collection.
Hier ist mehr straight-forward Ansatz. Es berücksichtigt auch die Wiederholung der Buchstaben, zahlen, Leerzeichen, tabs und alle. Sie können tatsächlich arbeiten, mit Echtzeit-Sätze. Und auch wenn Sie ein Neuling sind, werden Sie nicht finden, dieser code ist schwer zu verstehen (oder hoffe ich) 🙂