Entra

View Full Version : [JAVA] Invocare un metodo senza un costruttore


ruggeroerre
12-06-2010, 11:42
Ciao a tutti,
ho un problema con java: posso creare una certa classe A con un certo metodo e invocare questo metodo senza avere il costruttore di A?

poi un altro problemino: dovrei fare un programma che chiede all'utente di riempire le caselline di un array con tanti 0 e 1; come faccio a dire al programma che se l'utente inserisce numeri diversi da 0 e 1 deve ripetere la richiesta?

scusate le domande un pò banali ma sono ancora all'inizio:D

PGI-Bis
12-06-2010, 12:05
Per la prima, puoi usare un metodo statico:

public class A {

public static int metodo() {
return 10;
}
}

int x = A.metodo(); //non serve dire new A().metodo()

Per la seconda dipende dalla GUI. Se usi la console puoi creare un ciclo:

System.console().printf("Inserisci 0, 1 o quit per uscire.\n");
while(true) {
String input = System.console().readLine();
if(!input.isEmpty()) { //se l'utente ha scritto qualcosa
char c = input.charAt(0);//piglia il primo carattere
if(c == '0' || c == '1') {
//l'utente ha inserito 0 o 1
break;
} else if(input.equalsIgnoreCase("quit")) {
//esci dal programma?
System.exit(0);
} else {
System.console().printf("Per le ciabatte di giosafatte, zero o uno!\n");
}
}

Se usi una gui con controlli di testo, pulsanti eccetera, allora... be', usi due pulsanti :D:

ruggeroerre
12-06-2010, 12:20
Grazie mille per la prima risposta:)

per quanto riguarda la seconda, non conosco il comando break che digiti ad un certo punto...

comunque per l'input uso una finestra con un solo pulsante quindi devo scrivere nel codice che l'utente deve inserire 0 oppure 1 in maniera tale che il programma non prosegue se prende in input un numero diverso

bobby1112
12-06-2010, 12:24
import java.util.Scanner;

public class testMain {

public static void trovaNumero()
{
System.out.println("OK");
}

//Funzione che da la possibilità di reinserire i volori
public static void riempiArray()
{
int contatore=0;
Scanner input=new Scanner(System.in);
int [] vet=new int [5];
while(contatore!=vet.length-1)
{

int numero_da_inserire=input.nextInt();

if(numero_da_inserire==0 || numero_da_inserire==1)
{
vet[contatore]=numero_da_inserire;
contatore++;
}
}


//stampa Vettore di 0 e 1
for(int i=0;i<vet.length;i++)
System.out.print(vet[i]);

}
public static void main(String[] args) {
testMain test = null;
test.trovaNumero();
test.riempiArray();
}


}


ciao

ruggeroerre
12-06-2010, 12:24
un ' altra cosa:

nella prima domanda nel caso in cui dichiaro il metodo static, un altra classe è in grado di eseguirlo?

ndakota
12-06-2010, 12:40
un ' altra cosa:

nella prima domanda nel caso in cui dichiaro il metodo static, un altra classe è in grado di eseguirlo?

Intendi se è possibile invocarlo da un'altra classe? Sì, è tutto public così com'è il codice. E lo invocherai sempre nel medesimo modo

int n = A.metodo();