Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di lana
    Registrato dal
    Oct 2000
    Messaggi
    62

    [java]chiamare metodo interno alla classe

    è la prima volta che scrivo qualcosa in java....

    ho iniziato a scrivere questa classe ma mi sono bloccato subito perche non so come chiamare dal metodo main il metodo make_list

    il compilatore mi da questo errore

    srand_string.java [9:1] non-static variable this cannot be referenced from a static context
    this.make_list("mavava");
    ^
    1 error
    Errors compiling srand_string.
    la classe è questa, grazie

    public class srand_string
    {
    public static String[] results;
    public static String[] theList;

    public static void main(String[] args)
    {
    this.make_list("mavava");
    }

    public String[] make_list(String aString)
    {
    String[] x = new String[100];

    for( int i = 0; i < aString.length(); i++)
    {
    x[i] = aString.substring(i, 1);
    }
    System.out.println(x);
    return x;

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    5
    srand_string.java [9:1] non-static variable this cannot be referenced from a static context

    cioè nn puoi utilizzare metodi, variabili etc... non statiche richiamandole da un contesto statico.
    in poche parole... il main deve essere sempre dichiarato static quindi se vuoi richiamare un metodo interno o una variabile globale, etc... devi definire tutte queste statiche (al limite definiscile come static private)

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Quello che ha detto Neithan è perfettamente esatto... metti il modificatore static nell'intestazione di quel metodo... ma soprattutto rimuovi quel this quando richiami il metodo: il compilatore, infatti, non ha fatto caso che stai chiamando un metodo non-statico (te l'avrebbe detto dopo...); ti ha solo detto che non puoi usare la parola chiave this in un contesto statico, in quanto this è una "variabile" non statica.

    In realtà, quindi, nel tuo codice ci sono 2 errori, non uno solo.

    (Non ti scoraggiare, non sai quante volte ci ho sbattuto la testa io, le prime volte!! :gren: )

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di lana
    Registrato dal
    Oct 2000
    Messaggi
    62
    grazie,

    ho provato così ma ninte

    Codice PHP:
    public class srand_string
    {
        public static 
    String[] results;
        public static 
    String[] theList;   
        
        public static 
    void main(String[] args)
        {
            
    make_list("mavava");
        }
        
        public static 
    String[] make_list(String aString)
        {
            
    String[] = new String[100];
            
            for( 
    int i 0aString.length(); i++)
            {
                
    x[i] = aString.substring(i1);
            }
            
    System.out.println(x);
            return 
    x;
            
        } 
    l'errore che mi da è

    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1444)
    at srand_string.make_list(srand_string.java:18)
    at srand_string.main(srand_string.java:9)
    Exception in thread "main" 
    grazie ancora, da php e actionscript è un passo un pò pesante.....

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Allora... per prima cosa non vedo perchè non hai dichiarato il metodo come void visto che non te ne fai niente dell'array che viene restituito.

    Seconda cosa: quello che mi pare tu voglia fare è spezzettare la stringa in un array di stringhe, ciascuna contenente un carattere della stringa di partenza... per fare questo, devi far avanzare anche il secondo indice di substring...

    codice:
    x[i] = aString.substring(i, i+1);
    La sintassi del metodo che hai usato, infatti è la seguente:
    substring(int beginIndex, int endIndex) e prende la stringa a partire dal carattere in posizione beginIndex inclusa fino a endIndex esclusa.

    Mettendo 1 come secondo parametro, ovviamente ti dava errore quando i era maggiore di 1: come fai a prendere una stringa a partire dal carattere in posizione 2 fino al carattere in posizione 1?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di lana
    Registrato dal
    Oct 2000
    Messaggi
    62
    ah ok grazie non avevo capito come funziona substring pensavo fosse

    x[i] = aString.substring(inizio, vai avanti di);

    come nella funzione substr di php

    non ho dichiarato la funzione void perche dopo devo richiamarla da un metodo che non ho ancora scritto per ottenere l'array di caratteri

    grazie, ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.