Вызов нескольких методов (int) в методе main()

#java #methods #int #boolean

#java #методы #int #логическое

Вопрос:

В настоящее время у меня возникает проблема с вызовом каждого из моих методов (int) в моем основном методе, получая ошибку «не удается найти переменную» для каждого из моих вызовов. Как я могу исправить свой код, чтобы я мог вызывать каждый метод и получать выходные данные для каждого отдельного метода?

Вот мой код:

 import java.util.*;
public class Method{

 public static void main(String [] args) { 
  System.out.println(evenOdd(x));
  System.out.println(boxMake(n));
  System.out.println(checkPrime(n));  
 }
 public static boolean evenOdd(int x) {
 Scanner sc = new Scanner(System.in);
  System.out.println("Enter your number to check even or odd: ");
 x = sc.nextInt();
  boolean odd = false;
if(x % 2 ==0){
odd = true;
  System.out.println(odd   " is true.");
 }
return odd;
}

public static void boxMake(int n) {
Scanner sc = new Scanner(System.in);
  System.out.println("Enter your number to make a box: ");
n = sc.nextInt();
for(int i=0; i<n; i  ){
  for(int x=0; x<n; x  ){
     System.out.print("*");
   }
     System.out.println("");
  }
}

 public static int checkPrime(int n){
 int i;
 int m=0;
 int flag=0;
 Scanner sc = new Scanner(System.in);
   System.out.println("Enter a number to check if prime: ");
 n = sc.nextInt();
 m=n/2;
  if(n==0||n==1){
     System.out.println(n   " is not a prime number");
  }else{
     for(i=2; i<=m; i  ){
        if(n % i == 0){
           System.out.println(n   " is not a prime number");
           flag = 1;
        break;
        }
      }
        if(flag == 0){
           System.out.println(n   " is a prime number"); 
        }
     }
      return n;
   }
}
  

Комментарии:

1. В вашем основном методе не объявлено x or n . Откуда они должны взяться?

2. Поскольку вы присваиваете значение только x or n внутри методов evenOdd и boxMake , вам не нужно передавать их в качестве аргументов в эти методы. Просто объявите и назначьте переменные внутри метода.

Ответ №1:

Пожалуйста, измените свой код таким образом :

 public class Example {

    public static void main(String[] args) {
        int x = 0, n = 0, p = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your number to check even or odd: ");
        x = sc.nextInt();
        evenOdd(x);
        System.out.println("Enter your number to make a box: ");
        n = sc.nextInt();
        boxMake(n);
        System.out.println("Enter a number to check if prime: ");
        p = sc.nextInt();
        checkPrime(p);
        sc.close();
    }

    public static void evenOdd(int x) {
        if (x % 2 == 0) {
            System.out.println(x   " is even.");
            return;
        }
        System.out.println(x   " is odd.");
    }

    public static void boxMake(int n) {
        for (int i = 0; i < n; i  ) {
            for (int x = 0; x < n; x  ) {
                System.out.print("*");
            }
            System.out.println("");
        }
    }

    public static void checkPrime(int n) {
        int i;
        int m = 0;
        int flag = 0;
        m = n / 2;
        if (n == 0 || n == 1) {
            System.out.println(n   " is not a prime number");
        } else {
            for (i = 2; i <= m; i  ) {
                if (n % i == 0) {
                    System.out.println(n   " is not a prime number");
                    flag = 1;
                    break;
                }
            }
            if (flag == 0) {
                System.out.println(n   " is a prime number");
            }
        }
    }
}
  

Ответ №2:

Сделайте основной метод похожим на этот и удалите сканеры из ваших методов следующим образом:

  public static void main(String [] args) { 
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your number to check even or odd: ");
      x = sc.nextInt();
      System.out.println("Enter your number to make a box: ");
      n = sc.nextInt();
      System.out.println(evenOdd(x));
      System.out.println(boxMake(n));
      System.out.println(checkPrime(n));  
     }
public static boolean evenOdd(int x) {
  boolean odd = false;
if(x % 2 ==0){
odd = true;
  System.out.println(odd   " is true.");
 }
return odd;
}

public static void boxMake(int n) {
for(int i=0; i<n; i  ){
  for(int x=0; x<n; x  ){
     System.out.print("*");
   }
     System.out.println("");
  }
}

 public static int checkPrime(int n){
 int i;
 int m=0;
 int flag=0;
 m=n/2;
  if(n==0||n==1){
     System.out.println(n   " is not a prime number");
  }else{
     for(i=2; i<=m; i  ){
        if(n % i == 0){
           System.out.println(n   " is not a prime number");
           flag = 1;
        break;
        }
      }
        if(flag == 0){
           System.out.println(n   " is a prime number"); 
        }
     }
      return n;
   }
}
  

Ответ №3:

n и x являются локальными переменными в ваших методах. И имейте в виду, что, например, n from evenOdd() не имеют ничего общего, кроме имени, с n from boxMake() . Если вы хотите использовать n и x во всем своем классе, определите их как члены класса.

 import java.util.*;
public class Method{
private int n;
private int x;