2015-01-10 2 views
0

Я только начал изучать Java, и по какой-то причине моя программа ничего не возвращает при компиляции.Почему моя программа ничего не возвращает?

Цель: Написать метод, называемый printPowersOf2, который принимает максимальное число в качестве аргумента и печатает каждую мощность 2 из 20 (1) до той максимальной мощности, включительно. Например, рассмотрим следующие вызовы:

printPowersOf2(3); 
printPowersOf2(10); 

Эти вызовы должны производить следующий вывод:

1 2 4 8 
1 2 4 8 16 32 64 128 256 512 1024

Проблема также может быть найден из here

мой код:

public class Test{ 
    public static void main(String[] Args){ 
     printPowersOf2(3); 
     printPowersOf2(10);   
    } 
    public static int printPowersOf2(int num){ 
     double b = Math.pow(2,num); 
     int a = (int)b; 
     return a; 
    } 
} 

ответ

3

Он возвращает значение, но это не то, что вы хотите. Вы хотите печать это! Вы должны напечатать значения в цикле с помощью:

System.out.printf("%d ", a); 

вместо return a; Полнофункциональный:

public static void printPowersOf2(int num) { 
    for (int i = 0; i < num; i++) { 
     System.out.print("%d ", Math.pow(2, i)); 
    } 
    System.out.println(); // for the line break 
} 

Нет необходимости double с, так как эти числа являются полными квадратами.

1

Я думаю, что ваш код должен быть:

public class Test{ 
    public static void main(String[] Args){ 
     printPowersOf2(3); 
     printPowersOf2(10);   
    } 
    public static void printPowersOf2(int num){ 
     for(int i = 0; i <= num; ++i) 
     { 
      double b = Math.pow(2,num); 
      System.out.print(b + " "); 
     } 
    } 
} 

Вы не должны ничего возвращать. Вы должны печатать только внутри функции.

Смежные вопросы