2013-10-11 14 views
5

Sto definendo una funzione in Java che non usa l'oggetto classe. Viene semplicemente utilizzato per convertire l'input da stringa dell'utente a un numero intero. Non importa dove metto la funzione che ottengo e l'errore. Mi stavo chiedendo dove dovrei posizionarlo. Qui èDove definire un metodo non di classe?

//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; 
} 

risposta

11

basta creare una classe Util (es: ConvertionUtil.java) e mettere questo metodo come metodo static lì.

public class ConvertionUtil{ 

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

} 

Usage:

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

Nota: Un metodo statico "buono" non deve riferirsi a qualcosa di diverso dagli input passati. In questo modo non inciderai sulla capacità di test del tuo codice. –

8

Si definisce in una classe (tutto è una classe in Java), ma rendono static:

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

penso che si dovrebbe utilizzare eccezione come questa "

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; 
    } 
} 

Ed è possibile utilizzare solo metodi statici di classi in cui è necessario in questo modo:

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(); 
     } 
    } 
} 
Problemi correlati