Utilisation pour des incréments de boucle dans un procédé

voix
2

Je suis en train d'utiliser une méthode pour imprimer un nombre aléatoire plusieurs fois par incréments. Le problème est que je ne semble pas comprendre les méthodes très bien. Je n'ai pas de problème à faire autrement, mais lorsque je tente de le faire en appelant une méthode que je ne peux pas obtenir le retour et ma console reste juste vide. Voici ce que j'ai jusqu'à présent:

package WayBack;

import java.util.Random;

public class Review {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }

    {
        method1();
    }

    public String method1()
    {
        String rv = ;
        for(int i = 0; i <= 4; i++)
        {
            Random r = new Random();
            int number = r.nextInt((100) - 0) * 100;
            System.out.println(your number is  + number);
        }
        return rv;
    }
}

Toute aide serait grandement appréciée Merci

Créé 20/10/2018 à 03:09
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
1

Vous devez appeler la method1fonction main. Mais votre method1fonction est une méthode d'instance. Donc , vous devriez new une instance de la Reviewclasse, puis appeler la fonction de method1.

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Review instance = new Review();
    instance.method1();
}

Vous pouvez également déclarer method1que staticpour que vous puissiez appeler directement dans la mainméthode.

public static void main(String[] args) {
    // TODO Auto-generated method stub
    method1();
}
public static String method1()
{
    String rv = "";
    for(int i = 0; i <= 4; i++)
    {
        Random r = new Random();
        int number = r.nextInt((100) - 0) * 100;
        System.out.println("your number is " + number);
    }
    return rv;
}

Une autre façon, vous pouvez invoquer la method1 dans la constructorde la Reviewclasse. Et si vous créez une instance d'une classe, les méthodes de la constructorde la classe sont automatiquement appelés. De cette façon, vous n'avez pas nécessaire d'invoquer votre méthode dans la main.

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Review instance = new Review(); // it will call the method1 automatically
}
public Review() {
    // invoke your method
    method1();
}
Créé 20/10/2018 à 03:19
source utilisateur

voix
1

Dans votre code, vous n'êtes pas appeler la méthode method1. Il n'est pas enveloppé dans Main, au lieu , il est enveloppé dans un ensemble de flottant accolades.

package WayBack;

import java.util.Random;

public class Review {

public static void main(String[] args) {
    method1(); // put it here

}

// This block is not executed
{
method1();
}

public String method1()
{
String rv = "";
for(int i = 0; i <= 4; i++)
{
Random r = new Random();
int number = r.nextInt((100) - 0) * 100;
System.out.println("your number is " + number);
}    return rv;
}
}
Créé 20/10/2018 à 03:18
source utilisateur

voix
0

Depuis « method1 » est appelée dans un bloc, cela exécutera au moment où vous créez l'objet.

{
    method1();
}

Il vous suffit de créer l'objet dans la principale méthode. Pas besoin de faire méthode statique.

Essaye ça,

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Review review = new Review();
}
Créé 20/10/2018 à 05:04
source utilisateur

voix
0

Votre variable rv retourne une valeur vide.

Vous pouvez créer une classe (MyClass) où l'avenir vous pouvez ajouter d'autres méthodes: Par exemple, vous pouvez faire:

package WayBack; 
import java.util.Random; 

public class Review {

  public static void main(String[] args) { 
   // TODO Auto-generated method stub

   public MyClass work=new MyClass();

    work.method1();

  } 
 } 
//---create an other file and write this one    
 Public Class MyClass{

   private String rv;
   private int number;
   private Random r;

  //constructor
  public MyClass(){

    this.number=0;
    this.rv="";
    this. r= new Random();

   }

  public String method1() { 

    for(int i = 0; i <= 4; i++) { 

     number = r.nextInt((100) - 0) * 100;
     System.out.println("your number is "+number);
      rv=rv+number+","; } 
      return rv; } 
}//end MyClass
Créé 20/10/2018 à 04:59
source utilisateur

voix
0

Comme tout le monde pointe, vous devez inclure method1()dans votre main. La raison de cela est parce que Java commence tous les programmes public static void main(String[] args)d'ici , il lit une ligne à la fois à l' intérieur du bloc de code. Un bloc de code est défini comme ce qui est dans les « { » et « } », accolades souvent appelés.

Parce que la mainméthode est toujours statique, et vous ne pouvez pas faire référence à des choses non statiques à l' intérieur d' une méthode statique, soit vous devez changer votre method1être statique ou aussi créer un objet qui peut faire référence à la méthode. Vous apprendrez cela plus tard.

Pour l'instant,

public static void main(String[] args) {
    method1();
}

public static String method1() {
    String rv = "";
    Random r = new Random(); //this 'r' object only needs to be created once.
    for(int i = 0; i <= 4; i++)
    {
         int number = r.nextInt(100) * 100; // you were subtracting 0 for no reason?
         System.out.println("your number is " + number);
         rv = rv + number + ", "; //rv is empty in your example, this will fill it with the 5 numbers generated. (It's not perfect)
    }
    return rv;
}
Créé 20/10/2018 à 03:32
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more