2013-10-11 12 views
5

Ich definiere eine Funktion in Java, die kein Klassenobjekt verwendet. Es wird einfach verwendet, um die vom Benutzer eingegebene Zeichenfolge in eine Ganzzahl zu konvertieren. Egal wo ich die Funktion platziere und bekomme Fehler. Ich habe mich gefragt, wo ich es hinstellen sollte. Hier ist esWo definieren Sie eine Nicht-Klassenmethode?

//Basically, when the user enters character C, the program stores 
// it as integer 0 and so on. 

public int suit2Num(String t){ 
    int n=0; 
    char s= t.charAt(0); 
    switch(s){ 
    case 'C' :{ n=0; break;} 
    case 'D': {n=1;break;} 
    case 'H':{ n=2;break;} 
    case 'S': {n=3;break;} 
    default: {System.out.println(" Invalid suit letter; type the correct one. "); 
      break;} 
    } 
return n; 
} 

Antwort

11

Nur eine Util Klasse erstellen (zB: ConvertionUtil.java) und setzen diese Methode als static Verfahren gibt.

public class ConvertionUtil{ 

public static int suit2Num(String t){ 
    --- 
} 

} 

Verbrauch:

int result = ConvertionUtil.suit2Num(someValidStirng); 
+0

Hinweis: Eine „gute“ statische Methode auf etwas anderes als die Eingänge nicht bestanden beziehen. Auf diese Weise haben Sie keinen Einfluss auf die Testfähigkeit Ihres Codes. –

8

Sie es innerhalb einer Klasse definieren (alles ist eine Klasse in Java), aber es static machen:

public class MyClass { 

    //Basically, when the user enters character C, the program stores 
    // it as integer 0 and so on. 
    public static int suit2Num(String t){ 
     int n=0; 
     char s= t.charAt(0); 
     switch(s) { 
      case 'C' :{ n=0; break;} 
      case 'D': {n=1;break;} 
      case 'H':{ n=2;break;} 
      case 'S': {n=3;break;} 
      default: { 
       System.out.println(" Invalid suit letter; type the correct one. "); 
       break; 
      } 
     } 
     return n; 
    } 
} 
0

Ich glaube, Sie verwenden sollten Ausnahme wie diese "

public class MyClass { 

//Basically, when the user enters character C, the program stores 
// it as integer 0 and so on. 
    public static int suit2Num(String t) throws InvalidInputException{ 
     int n=0; 
     char s= t.charAt(0); 
     switch(s) { 
      case 'C' :{ n=0; break;} 
      case 'D': {n=1;break;} 
      case 'H':{ n=2;break;} 
      case 'S': {n=3;break;} 
      default: { 
       throw new InvalidInputException(); 
      } 
     } 
     return n; 
    } 
} 

Und Sie können nur statische Methoden von Klassen verwenden, in denen Sie so brauchen:

package com.example; 

import static MyClass; 

public class MMMain{ 

public static void main(String[] args) { 
     try { 
      System.out.println(suit2Num("Cassandra")); 
      System.out.println(suit2Num("Wrong line")); 
     } catch(InvalidInputException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Verwandte Themen