2017-03-02 2 views
0

Also ... Ich verstehe die Idee einer Hauptmethode und dann mehrere Klassen aufrufen zu können. Dass wir uns direkt darauf beziehen können, um verschiedene Szenarien zu führen. AKA benutzt es, wenn es gebraucht wird. Static ist für eine Instanz, während Main übergreifend ist Fragen: 1. Wo ich die Bar platziert habe gibt es eine Rückkehr; was benutzt wird, um mich aus dieser Instanz herauszuholen. Allerdings sagt es mir, ich brauche einen String. Was ist sinnvoll, weil die Methode und die Ausgabe übereinstimmen müssen? Ich habe versucht: 1.Zur Rückgabe des int-Wertes 2.die Konvertierung des int in string using-String.valueOf (special); Wo ist der Fehler?Instanzen und Klassen Syntax

import java.util.Scanner; 
public class Overall{ 
    public static void main(String[] argc){ 
    Scanner input = new Scanner(System.in); 
    int i = 0; 
    int containsLowerCase = 0; 
    System.out.println(" Please give me a string that has a combination of lower, upper, digits and special characters"); 
    String s1 = input.next(); 
    System.out.println(s1); 
    } 
    public static String isSpecial (String input){ 
    int special = 0; 
    int i =0; 
    for(i=0;i< input.length(); i++){ 
     char c = input.charAt(i); 
     if (c=='#' || c=='$' || c== '*' || c== '&') 
     special++; 
     String.valueOf(special); 
    } 
    return special; 


_________________________________________________________ 
^ONLY FOCUSING ON UPPER HALF ISSUES^

    public static String print (String input){ 
    System.out.println(s1); 
    }  
public static int isDigit (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.charAt(i); 
    if (character.isDigit(s1.charAt(i))){ 
     isDigit++; 
    } 
    return isDigit++; 
    } 
} 
public static int isLower (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.carAt(i); 
    if (character.isLowerCase(s1.charAt(i))){ 

     isLower++; 
    } 
    } 
} 
public static int isUpper (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.carAt(i); 
    if (character.isUpperCase(s1.charAt(i))){ 

     isUpper++; 
    } 
    } 
} 






} 

Antwort

2

Sie spezielle zurück, die ein int ist, müssen Sie ein neues String-Variable definieren, und das, oder einfach return String.valueOf(special); zurückzukehren.

Sie haben den String.valueOf (int) aufgerufen, der ein int in einen String konvertiert, aber Sie müssen den Rückgabewert dieser Methode in eine String-Variable setzen.

Beispiel: String newStringVariable = String.valueOf(special);

1

Return String.valueOf (Anzahl)

public static String isSpecial (String input){ 
    int special = 0; 
    int i =0; 
    for(i=0;i< input.length(); i++){ 
     char c = input.charAt(i); 
     if (c=='#' || c=='$' || c== '*' || c== '&') 
     special++; 
    } 
    return String.valueOf(special); 
0

Ich werde versuchen, alle Ihre Fehler zu erwähnen, und Sie sagen, warum es falsch ist und was es hat ro dergleichen sein.

Zuerst beginnen wir mit Ihrer isSpecial-Methode:
Sie zählen, wie oft ein Sonderzeichen in Ihrer Zeichenfolge ist. Der meiste Code ist richtig, aber ich denke, Sie wollten den Typ int von String nicht zurückgeben. Beachten Sie, dass der Typ, den Sie vor dem Namen der Methode schreiben, in diesem Fall String, welcher Objekttyp die Methode zurückgibt. In Ihrer Methode zählen Sie die Häufigkeit, mit der ein bestimmtes Ereignis eintritt. Sie möchten also die Nummer zurückgeben, um später mit dieser oder einer anderen Zahl zu rechnen.

Die Rückgabebefehlsanweisung muss im Methodenkörper sein, und wenn sie erreicht wird, nimmt die aktuelle Methode diesen Wert und gibt ihn an den Aufruf zurück. Danach endet die Methode, so dass nach einer Rückkehr diese Methode beendet wurde und das Programm dort fortgesetzt wird, wo Sie diese Methode aufgerufen haben. Nehmen Sie folgenden Code:

public class Test { 
    public static void main (String [] args){ 
     String testText = "This was written on 2.03.2017"; 
     int numbers = countNumeric (testText); 
     System.out.println ("The text containes "+ numbers +" numbers"); 
    } 

    public static int countNumeric (String text){ 
     int count = 0; 
     for (int i = 0; i < text.length; i++){ 
      if (Character.isDigit (text.charAt (i)) 
       count++; 
     } 
     return count; 
    } 

Wenn Sie diese Methode ausführen, Java erstellt einen neuen String, übergibt dann diese Zeichenfolge an das countNumeric Verfahren, in dem um Eins für jede Ziffer Zeichen im String erhöht wird. Dann gibt countNumeric die Anzahl zurück. Das Programm springt zurück zur Hauptmethode und nimmt dort den Rückgabewert von countNumeric an und setzt ihn in die Variablennummern, dann druckt er das aus.

Auch Sie scheinen ein Problem mit String.valueOf zu haben. String.valueOf ist eine Methode, die eine Zahl akzeptiert und sie in eine Zeichenfolge konvertiert. Aber da du special als int deklariert hast, kannst du keinen String darin speichern (und vielleicht später verwenden). So eine Zahl in einen String zu konvertieren, müssen Sie eine neue Variable vom Typ String erstellen, wie in diesem einfachen Beispiel:

int number = 123; 
String text = String.valueOf (number); 
//do something with text 

So ist die meisten Ihre Fehler zurückzuführen sind fehlende Rückkehr oder falschen Rückgabetyp. Auch die Rückgabe in Ihrer isDigit-Methode ist in der for-Schleife, so dass es nur auf das erste Zeichen der Zeichenfolge aussehen wird.

Ich hoffe, ich könnte Ihnen helfen und würde vorschlagen, dass Sie für eine gute Java-Schritt für Schritt-Tutorial suchen, da Sie nicht mit Programmierung vertraut sind.

Verwandte Themen