2015-07-24 3 views
3

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

import java.util.Scanner; 
public class Alpha 
{ 
    public static void main(String args[]) 
    { 
     Scanner input = new Scanner(System.in); 
     int n; 

     System.out.println("Enter no. of stars"); 
     n = input.nextInt(); 

    } 
    public static void Loop() 
    { 
     for (int counter = 1; counter <= n; counter++) 
     { 
      System.out.println("*"); 
     } 
    } 
} 

Проблема я столкнулся в том, что в методе Loop, я не могу использовать переменную п Is есть способ использовать переменную, которая находится в основном методе, в другой? Ty

-Pingu

+2

Передайте его как параметр ... См. Мой код ниже ... – CoderNeji

+1

Формат Q & A этого веб-сайта не подходит для обучения этим концептуальным основам. Правильное объяснение, как это сделать, будет включать в себя руководство по аргументу и методу. – Raedwald

+0

Возможно, это будет полезно https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html –

ответ

2
import java.util.Scanner; 
public class Alpha 
{ 
public static void main(String args[]) 
{ 
    Scanner input = new Scanner(System.in); 
    int n; 

    System.out.println("Enter no. of stars"); 
    n = input.nextInt(); 

    Loop(n); //calls Loop function and passes parameter n 
} 
public static void Loop(int n) //this function now expects a number n 
{ 
    for (int counter = 1; counter <= n; counter++) 
    { 
     System.out.println("*"); 
    } 
} 
} 
+1

Спасибо, эти комментарии заставило меня понять, как передать параметры – nootnoot

+0

Добро пожаловать, я рад, что смог помочь вам! ;) – Maslor

+0

Если вы считаете, что это ответ на ваш вопрос, было бы здорово, если бы вы отметили его как ответ (зеленый тик под кнопками голосования). Благодаря! @ IPing7 – Maslor

2

просто передать его в качестве параметра:

public static void main(String args[]) 
    { 
     Scanner input = new Scanner(System.in); 
     int n; 

     System.out.println("Enter no. of stars"); 
     n = input.nextInt(); 
     Loop(n); 

    } 
    public static void Loop (int count) 
    { 
     for (int counter = 1; counter <= count; counter++) 
     { 
      System.out.println("*"); 
     } 
    } 
+0

Одна вещь, которую я не получил, так как вы говорите Loop (n), не должно ли это быть public static void Loop (int n)? – nootnoot

+0

вы можете сделать это частным, но вы должны держать его статическим. в противном случае вы получите: «Невозможно сделать статическую ссылку на нестатический метод Loop (int) из типа Alpha», потому что основной метод также статичен. –

2

передать его как paramteer

import java.util.Scanner; 
public class Alpha 
{ 
    public static void main(String args[]) 
    { 
     Scanner input = new Scanner(System.in); 
     int n;  
     System.out.println("Enter no. of stars"); 
     n = input.nextInt();  
     loop(n); // added this 

    } 
    public static void loop (int n) // changed here 
    { 
     for (int counter = 1; counter <= n; counter++) 
     { 
      System.out.println("*"); 
     } 
    } 
} 
+1

Loop (n) not loop (n) –

+0

Спасибо за этот обзор – CoderNeji

+1

btw Я думаю, что цикл лучше называет методы, а затем Loop. –

0

Я также думаю, что вы могли бы объявить п в качестве публичной переменной. Это должно сделать его доступным во всем коде.

public int n;

Но я предполагаю, что передача его в качестве параметра является лучшей практикой, поскольку вы не создаете разницу внутри вашего кода. Я имею в виду, что если что-то меняется с переменной, вы нарушаете функцию. Хорошая практика всегда держать вещи «модульными» в вашем коде, поэтому она делает ее более устойчивой к изменениям и отладке. Лучше, если вы привыкнете к нему с самого начала =)

+1

, тогда вы говорите о поле 'static'. Модификатор доступа ничего не делает в пределах одного класса. – dly

1

Я думаю, вы должны использовать его как переменную экземпляра и для лучшего понимания назвать свой класс, как StarClass, он может обеспечить лучшее понимание. Хорошая практика программирования.

Но вы должны избегать излишней модификации экземпляра экземпляра без какой-либо логики.

0

Два способа .. один уже был отправлен в качестве ответа, а другой использовал переменную в качестве поля. Таким образом вы можете получить доступ (и изменить) его в каждом методе, не передавая его.

public class Alpha 
{ 

    static int n; 
    public static void main(String args[]) 
    { 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter no. of stars"); 
     n = input.nextInt(); 
     loop(); 
    } 
    public static void loop() 
    { 
     for (int counter = 0; counter < n; counter++) 
     { 
      System.out.println("*"); 
     } 
    } 
} 

И начните имена методов с нижним регистром и подсчетом с 0. Это обычная практика, и это очень помогает использовать стандарты с самого начала.