Java распечатать рекурсию в основном методе - PullRequest
0 голосов
/ 27 мая 2020

Мне было интересно, когда я попытался распечатать значение рекурсии в main, ответ был:

Введите число: 1

2 Результат:

Как сделать цифру 2 вперед, как,

Результат: 2

import java.util.Scanner;

public class Question4Final {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter the number: ");
        int a = scan.nextInt();

        System.out.printf("The result is: ", multiplication(a));
    }

    public static int multiplication(int a) {

        if (a == 5) {
            int multiply = 10 * 6 * 2;
            System.out.print(multiply);
        } else if (a == 4) {
            int multiply2 = 6 * 2;
            System.out.print(multiply2);
        } else if (a == 1) {
            System.out.print("2");
        }
        return a;
    }
}

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Чтобы вызвать метод:

System.out.printf("The result is: ", multiplication(a));

сначала должны быть вычислены аргументы, поэтому multiplication(a) выполняется перед System.out.printf("The result is: ", multiplication(a)). Так как multiplication(a) что-то печатает, эта печать выполняется до того, как будет напечатано «Результат:».

Вы должны изменить multiplication(a), чтобы просто вернуть результат без его печати. Затем используйте System.out.println("The result is: " + multiplication(a)), чтобы распечатать результат.

Обратите внимание, что вам нужно изменить значение, возвращаемое multiplication(a), поскольку в настоящее время вы возвращаете a, которое не является значением, напечатанным этим методом.

0 голосов
/ 27 мая 2020

У вас есть 2 проблемы в вашем коде.

  1. Во-первых, вы печатаете значение 'multiply' в своем методе stati c:

    publi c stati c int multiplication (int a) {

    System.out.print (multiply);

Это причина, по которой он печатает 2 раньше выписка:

2The result is:

Вторая проблема заключается в том, что вы вызываете метод умножения в операторе печати:

System.out.printf («Результат:», умножение (a));

Это не то, как распечатать результат, вызвав метод. Я взял ваш пример и запустил приведенный ниже код. Вы можете проверить этот код.

import java.util.Scanner;

public class Main
{
     public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter the number: ");
        int a = scan.nextInt();
        int product = multiplication(a);

        System.out.println("The result is : " +product);
    }

    public static int multiplication(int a){

        int multiply = 0;

        if(a == 5){
            multiply = 10 * 6 * 2;
        }else if(a == 4){
            multiply = 6 * 2;
        }else if(a == 1){
            multiply = 2;
        }
        return multiply; 
    }
}

Ниже приведены выходы для различных опций:

Enter the number: 4                                                                                                                                 
The result is : 12

Enter the number: 5                                                                                                                                 
The result is : 120 

Enter the number: 1                                                                                                                                 
The result is : 2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...