2016-08-20 3 views
0

Die meisten Beispiele, die ich bei meiner Suche nach der Antwort finde, sind in komplexen Code eingebettet. Ich versuche nur, ein Frageprogramm wissen zu lassen, ob man die Antworten in Groß- oder Kleinschreibung auf eine Frage mit zwei Antworten (binär?) Annimmt und dann beide Antworten verwendet, um zu einem singulären Ergebnis zu gelangen. Ich habe einen if/else-Ansatz versucht, bevor ich in meinem Buch nach Charakterklassenmethoden gesucht habe, aber es hilft nur auf halbem Wege mit seinen Beispielen.Wer kommt zuerst? Das Zeichen oder die Zeichenfolge?

hier ist der Code:

import java.util.Scanner; 
public class MarriageQuiz 
{ 
public static void main(String[] args) 
{ 
    char isMarried = 'M'; 
    char isSingle = 'S'; 
    String marStat; 

    System.out.print("Please enter your Marital Status (M or S) >> "); 
    marStat = input.nextLine(); 

    if(marStat.isUppercase(isMarried | isSingle)) 
    { 
     marStat = input.nextLine(); 
    } 
    else if((marStat.isLowercase(isMarried | isSingle))) 
    { 
     marStat = marStat.toUpperCase(isMarried | isSingle); 
    } 
    System.out.print("You are " + marStat); 
} 
} 
+0

Ich flirte mit der Idee, eine Boolean mit dieser –

+0

Ich dachte über die Verwendung von StingBuilder, aber ich muss immer noch die Zeichenfolge zu bearbeiten. –

+0

Was genau ist Ihre Frage? Eine andere Sache, die Logik Ihres Codebeispiels macht keinen Sinn, der Zweck kann nicht erkannt werden. –

Antwort

2

einfach konvertiert all Eingabe in Ihrem erwarteten Fall (Groß- oder Kleinschreibung, wählen Sie eines).

Kein Schaden beim Versuch, ein Zeichen in einen Fall zu konvertieren, der in diesem Fall schon passiert. Die toUppercase Methode beschwert sich nicht, wenn Sie es unnötig aufrufen. Also keine Notwendigkeit, für den Fall überhaupt zu testen.

marStat = marStat.toUppercase() ; 
if (marStat.equals('S') { 
    … do Single stuff 
} else if (marStat.equals('M') { 
    … do Married stuff 
} else { 
    … handle unexpected input 
} 

Tipp: Wenn dieser Code eine Unmenge mal ausgeführt wird, sollten Sie die Verwendung des char primitive ersetzt mit der Character Klasse der Autoboxing diskutiert in the Oracle Tutorial zu vermeiden.

+1

Alle neuen Programmierer, die da draußen sind, würden sich gut an dieses "Muster" erinnern - Sie werden es in Ihrer Karriere immer wieder verwenden, wenn Sie Benutzereingaben mit einer bekannten Zeichenfolge vergleichen. – MarsAtomic

+0

@RyanMartin ??? Machen Sie die M & S zu was? –

+0

Niemals. Ich denke, du hast meine Frage beantwortet. Ich möchte "M" oder "S" in meinen if/else-Aktionen verwenden. Ich wusste einfach nicht, wie man es erkennt, unabhängig davon, ob es sich um einen Fall handelt. –

0

isUppercase und isLowercase funktioniert so überhaupt nicht. Und dein Code macht wenig Sinn.

Es scheint, dass Sie nur Zeichen vergleichen möchten, aber Sie haben nextLine aufgerufen, die eine String zurückgibt. Und in den if-Anweisungen fragen Sie irgendwie nach Benutzereingabe wieder. Ich weiß nicht wirklich, was du hier machst.

Ich denke, Sie so etwas wie dies wollen:

char isMarried = 'M'; 
char isSingle = 'S'; 
char marStat; 

System.out.print("Please enter your Marital Status (M or S) >> "); 
marStat = input.nextLine().charAt(0); 

if(marStat == 's' || marStat == 'S') 
{ 
    System.out.println("You are single!"); 
} 
else if(marStat == 'm' || marStat == 'M') 
{ 
    System.out.println("You are married!"); 
} 

Das glaube ich nicht, dass Sie verstehen, wie funktioniert die Programmierung.

Verwandte Themen