2017-02-11 13 views
-3

Hier ist mein Code. Und es sieht so repetitiv aus. Gibt es eine Möglichkeit, es sauberer aussehen zu lassen? Vielen Dank. Und mein Code soll so etwas machen;
Geben Sie den Text: IDK, wenn ich gehe. Es ist mein BFF Geburtstag.
Sie haben eingegeben: IDK, wenn ich gehe. Es ist mein BFF Geburtstag.
BFF: bester Freund für immer
IDK: Ich weiß nicht,java indexOf ignoriert das erste Vorkommen

import java.util.Scanner; 

public class TextMsgDecoder { 
    public static void main(String[] args) { 
     /* Type your code here. */ 
     String a = "BFF"; 
     String b = "IDK";  
     String c = "JK"; 
     String d = "TMI"; 
     String e = "TTYL"; 
     Scanner scr = new Scanner(System.in); 
     System.out.println("Enter text:"); 
     String f = scr.nextLine(); 
     System.out.println("You entered: "+ f); 

     if(f.indexOf(a)>=0) 
     System.out.println("BFF: best friend forever"); 
     if(f.indexOf(b)>=0) 
     System.out.println("IDK: I don't know"); 
     if(f.indexOf(c)>=0) 
     System.out.println("JK: just kidding"); 
     if(f.indexOf(d)>=0) 
     System.out.println("TMI: too much information"); 
     if(f.indexOf(e)>=0) 
     System.out.println("TTYL: talk to you later"); 



     return; 
    } 
} 
+3

Ändern Sie alle 'indexOf (...)> ...' zu 'indexOf (...)> = ...' – janos

+0

Sie müssen '> = 0' oder'> -1' – 4castle

+0

Sie überprüfen sollte in Erwägung ziehen, die Dokumentation zu lesen. Was gibt 'indexOf' für das erste Zeichen in einer Zeichenfolge zurück? Wie werden Zeichenfolgen gezählt? Denken Sie darüber nach, warum Ihr Code dies tun könnte, und schauen Sie sich dann Ihre "if" -Anweisungen genauer an. –

Antwort

0

nur zu wiederholen, was in den Kommentaren gesagt wurde, (da Kommentare bereinigt werden kann)

if(f.indexOf(e)>0) 

sollte eigentlich be

if(f.indexOf(e)>=0) 

Oder, noch besser, einfach string.contains verwenden.

Eine dritte Wahl besteht darin, eine Hash-Tabelle zu erstellen. Ich bin nicht vor einem IDE sitzen und ich dies auf einem Handy zu schreiben, aber hier ist eine grobe Vorstellung (verwendet näher an C# Syntax als „gerade“ Java):

// A C# Dictionary is a hash table 
Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("BFF", "Best Friend Forever"); 
// Add the rest of the abbreviations 

// Loop over every key (abbreviation) in the hash table 
foreach (string abbreviation in dict.Keys) { 
    // If the string contains the abbreviation 
    if (f.contains(abbreviation)) { 

     Console.WriteLine(abbreviation + ": " + dict[key]); 
    } 
} 

, die viel einfacher zu Lesen/prägnanter, wenn Sie später weitere Abkürzungen hinzufügen.

Verwandte Themen