Использование для приращения цикла в методе - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь использовать метод для печати случайного числа несколько раз с шагом.Проблема в том, что я не очень хорошо понимаю методы.У меня нет проблем с этим, но когда я пытаюсь сделать это, вызывая метод, я не могу получить никакого возврата, и моя консоль просто остается пустой.Вот то, что я имею до сих пор:

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

Любая помощь будет высоко ценится Спасибо

Ответы [ 5 ]

0 голосов
/ 20 октября 2018

Так как 'method1' вызывается в блоке, он будет выполняться во время создания объекта.

{
    method1();
}

Вам нужно только создать объект в основном методе. Нет необходимости делать метод статическим.

Попробуйте это,

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Review review = new Review();
}
0 голосов
/ 20 октября 2018

Ваша переменная rv возвращает пустое значение.

Вы можете создать класс (MyClass), где в будущем вы можете добавить другие методы: Например, вы можете сделать:

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
0 голосов
/ 20 октября 2018

Вам необходимо вызвать функцию method1 в main.Но ваша method1 функция является методом экземпляра.Таким образом, вы должны создать новый экземпляр класса Review, а затем вызвать функцию method1.

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

Или вы можете объявить method1 как static, чтобы вы могли вызывать его непосредственно вметод main.

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

Другим способом можно вызвать method1 в constructor класса Review.И если вы создаете экземпляр класса, методы в constructor этого класса вызываются автоматически.Таким образом, вам не нужно вызывать ваш метод в 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();
}
0 голосов
/ 20 октября 2018

Как все указывают, вам нужно включить method1() в ваш main.Причина этого в том, что Java запускает все программы в public static void main(String[] args), отсюда она читает по одной строке за раз внутри блока кода.Блок кода определяется как то, что находится в '{' и '}', часто называемых фигурными скобками.

Поскольку метод main ВСЕГДА статический, и вы не можете ссылаться на нестатические вещи внутри статическогометод, вам необходимо либо изменить method1, чтобы он также был статическим, либо создать объект, который может ссылаться на метод.Вы узнаете об этом позже.

А пока

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;
}
0 голосов
/ 20 октября 2018

В вашем коде вы не вызываете метод method1.Он не заключен в Main, вместо этого он заключен в набор плавающих фигурных скобок.

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;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...