2017-02-05 5 views
-2

Ich muss eine Funktion, die längeres Wort von zwei eingegeben eingeben. Ich habe versucht, if-Anweisung und String.Length zu verwenden, aber ich kann es nicht richtig machen. Was wäre der beste Weg, um die Funktion zu machen? Unten ist das Hauptprogramm.Vergleichen von String-Längen in C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

public class LongerWord 
{ 
    public static void Main(string[] args) 
    { 
     Console.Write("Give 1. word >"); 
     String word1 = Console.ReadLine(); 
     Console.Write("Give 2. word >"); 
     String word2 = Console.ReadLine(); 
     String longer = LongerString(word1, word2); 
     Console.WriteLine("\"" + longer + "\" is longer word"); 
     Console.ReadKey(); 
    } 
} 
+5

Die Magie passiert in der 'Longeword' Methode, also müssen Sie diesen Code auch einschließen. – Abion47

+2

Bitte beachten Sie, dass Sie wissen müssen, was Sie hier messen. Eine naive Implementierung würde die '.Length'-Eigenschaft der beiden Strings vergleichen, aber da Sie das längere * Wort * eindeutig angegeben haben, ist dies möglicherweise nicht korrekt, abhängig von Ihrer Definition von" Länge eines Wortes ". 'string.Length' gibt die Anzahl von * Zeichen * zurück, die in Unicode-Codepunkte übersetzt werden, und ein * sichtbares Zeichen * kann nicht nur in einen solchen Codepunkt übersetzt werden, das Zeichen' à' kann sowohl als einzelnes Zeichen als auch als zwei Zeichen codiert werden der Buchstabe "a" und das diakritische "' ". –

+0

Betrachten wir zum Beispiel die Zeichenkette 'string s =" a \ u0300a \ u0300a \ u0300 ";', ist diese Zeichenkette länger oder kürzer als das Wort '" word "'? (Beachten Sie, dass der erste String als 'ààà' angezeigt wird, aber eine Länge von 6 hat). –

Antwort

5

, die ein Anfang ... von etwas sein sollte ...

private string LongerString(string x, string y) 
{ 
    return x.Length > y.Length ? x : y; 
} 
+1

Ich bezweifle, dass das OP verstehen wird, wenn er Schwierigkeiten hat, dies mit einem "if" zu lösen. – Filburt

+0

Downvoting für die Hausaufgaben anderer Leute – trailmax

+1

@trailmax Sie sollten das OP lieber ablehnen, wenn Sie denken, dass es Hausaufgaben sind und keine Mühe zeigen. – Filburt

0

Ich sehe nicht, warum stringName.Length verwendet, wird nicht funktionieren. Schauen Sie sich diesen Code:

Console.Write("Give 1. word >"); 
string word1 = Console.ReadLine(); 
Console.Write("Give 2. word >"); 
string word2 = Console.ReadLine(); 

if(word1.Length > word2.Length) 
{ 
    Console.Write("String One is longer."); 
} 
else 
{ 
    Console.Write("String Two is longer."); 
} 

Als Funktion, wäre es dies mag:

namespace String_Length 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.Write("Give 1. word >"); 
      string word1 = Console.ReadLine(); 
      Console.Write("Give 2. word >"); 
      string word2 = Console.ReadLine(); 

      CompareStrings(word1, word2); 
      Console.ReadKey(); 
     } 

     static void CompareStrings(string one, string two) 
     { 
      if (one.Length > two.Length) 
      { 
       Console.Write("String One is longer."); 
      } 
      else 
      { 
       Console.Write("String Two is longer."); 
      } 
     } 
    } 
} 

Vielleicht wollen Sie auch Code für hinzufügen, wenn die Länge der beiden Strings gleich sind zu einander, möglicherweise mit ein Versuch-Catch-Block. Ich hoffe, das hilft.

+0

Downvoting für jemand anderen Hausaufgaben – trailmax

+0

@trailmax Woher weißt du, dass es Hausaufgaben ist. Die Person hat eine Frage gestellt, es ist unsere Arbeit, diese Frage zu beantworten, nicht zu beurteilen, ob wir sollten oder nicht sollten.Außerdem, selbst wenn es eine Hausaufgabe war, hat er wenigstens etwas gelernt. Es ist besser als er nichts lernt. Übrigens, ich weiß, wie CrazyIvan sich anfühlt, wenn du versuchst und versuchst, es wieder vergeblich zu versuchen, Code zur Arbeit zu bringen. Ich bin 14 und habe viele ähnliche Probleme gehabt. –

+0

@trailmax Das Hausaufgabenproblem ist nicht, ob es sich um eine Hausaufgabe handelt. Es geht darum, ob der Fragesteller die Aufgabe selbst angemessen versucht hat, bevor er um Hilfe gebeten hat, anstatt nur die Hausaufgabenfrage zu stellen und die Antwort zu fordern. Ausgehend von der Frage scheint es offensichtlich, dass OP tatsächlich versucht hat, dies selbst zu tun, und lediglich um Rat statt um freie Arbeit bittet. – Abion47

1

Also habe ich herausgefunden, wie man die Funktion richtig macht, danke für all Ihre Hilfe! Ich musste Return-Anweisung verwenden. Wenn Wörter die gleiche Länge hatten, musste das erste Wort das angezeigte Wort sein. Hier ist, was ich habe:

public static string LongerString(string word1 , string word2) 
     { 
      if (word1.Length >= word2.Length) 
      { 
       return word1; 
      } 
      else 
      { 
       return word2; 
      } 
     }