Чем классы отличаются от методов?Java не распознает внешние классы - PullRequest
0 голосов
/ 05 декабря 2018

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

Я прошёл это и это и я уверенэто относится к моей проблеме, но может ли кто-нибудь объяснить, как они на меня влияют?

Путем проб и ошибок Я знаю, что команда shuffle работает нормально, так как она работает в классе.Он перестает работать, когда я помещаю его в отдельный метод.

    package pokemon.pkgcatch;


    public class PokemonCatch {

    public static void main(String[] args) throws IOException{

        {                                                                                                                                                                                                                         
    final String PlayerName; 
    int[][] MyPkmn;

    //Create a scanner to read input
    Scanner keyboard = new Scanner(System.in); 
    Scanner wildInput = new Scanner(new File("WildPkmn.txt"));
    Scanner myInput = new Scanner(new File("MyPkmn.txt"));

//Create a random object to roll die
    Random rand = new Random(); 


    System.out.print("Welcome to the world of Pokemon, Trainer! "
                     + " What is your name? ");
    //Intro. Save playerName variable and create a doc for player's Pkmn
    PlayerName = keyboard.nextLine();
    System.out.println("Here's your first Pokemon. It's a little weak"
                       + " but you'll just have to catch stronger ones.");

            /**
            try (PrintWriter writer = new PrintWriter("MyPkmn.txt")) {
                writer.println("int[][] MyPkmn =");
                writer.println("{1, 1, 2, 2, 2, 3}");
                writer.println("};");
            }
            */

    ArrayList<String> PokeBelt = new ArrayList<String>();   
            PokeBelt.add("{1, 1, 2, 2, 2, 3}");

    ArrayList<String> WildPkmn = new ArrayList<String>();
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");   
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 0, 1, 1, 2, 2}");
            WildPkmn.add("{0, 2, 2, 3, 3, 4}");
            WildPkmn.add("{0, 2, 2, 3, 3, 4}");
            WildPkmn.add("{0, 2, 2, 3, 3, 4}");
            WildPkmn.add("{0, 2, 2, 3, 3, 4}");
            WildPkmn.add("{0, 18, 16, 12, 10, 8}");
            WildPkmn.add("{0, 18, 16, 12, 10, 8}");

    System.out.println("The tall grass has " +
                   WildPkmn.size() +
                   " arrays stored in it.");

    //    for (int index = 0; index < WildPkmn.size(); index++)
    //         System.out.println(WildPkmn.get(index));

    System.out.println("The Ultimate Pokemon is out there somewhere. " +
                 "It's your job to catch it!");

Collections.shuffle(WildPkmn);
System.out.println(WildPkmn);

encounter();
        }       }   

public static encounter()
{
Collections.shuffle(WildPkmn);
System.out.println(WildPkmn);
System.out.println("You take a walk in the tall grass.");

} 

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Не нужно просить прощения за вопрос.Здесь самое подходящее место, чтобы задавать вопросы о Java в этом случае.

Одно ясно из кода, который вы разместили.Вам не хватает фундаментальных знаний Java, поэтому вы должны изучать язык, чтобы понять их.

Что пошло не так

Если вы скомпилируете код, компилятор покажет вам (синтаксические) ошибки, которые были следующими.

  • Импорт отсутствует

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

Один из примеров в вашем коде - это когда вы вызываете метод add() в WildPkmn объект типа ArrayList.

WildPkmn.add("{0, 0, 1, 1, 2, 2}");

Класс ArrayList - это хорошо известный класс Java, и он определен в пакете java.util .Таким образом, необходимо импортировать этот класс , чтобы компилятор мог ссылаться на это определение.Это делается с помощью оператора import java.util.ArrayList.

  • Определение метода

В Java каждый метод должен возвращать объект или значение или ... ничего.В последнем случае вы возвращаете void.Это то, что вы упустили при определении метода encounter().Вы забыли вернуть void.

Наконец, вы используете переменную WildPkmn внутри encounter().Эта переменная определена внутри main() и , только в области видимости метода видно, что она была определена (внутри скобок main()).Это не видно внутри encounter().

Вы должны передать эту переменную от main() до encounter() в качестве параметра.См. (Синтаксически) правильную версию этого кода ниже, чтобы проверить, как это делается.

package pokemon.pkgcatch;

// All the classes that you've used are imported here.
// Now the compiler knows where to look for their definitions.
import java.util.ArrayList;
import java.util.Collections;
import java.io.IOException;
import java.util.Scanner;
import java.util.Random;
import java.io.File;

 public class PokemonCatch {

   public static void main(String[] args) throws IOException{
     final String PlayerName;
     int[][] MyPkmn;

     //Create a scanner to read input
     Scanner keyboard = new Scanner(System.in);
     Scanner wildInput = new Scanner(new File("WildPkmn.txt"));
     Scanner myInput = new Scanner(new File("MyPkmn.txt"));

     //Create a random object to roll die
     Random rand = new Random();

     System.out.print("Welcome to the world of Pokemon, Trainer! "
                      + " What is your name? ");
     //Intro. Save playerName variable and create a doc for player's Pkmn
     PlayerName = keyboard.nextLine();
     System.out.println("Here's your first Pokemon. It's a little weak"
                        + " but you'll just have to catch stronger ones.");

     ArrayList<String> PokeBelt = new ArrayList<String>();
             PokeBelt.add("{1, 1, 2, 2, 2, 3}");

     ArrayList<String> WildPkmn = new ArrayList<String>();
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 0, 1, 1, 2, 2}");
             WildPkmn.add("{0, 2, 2, 3, 3, 4}");
             WildPkmn.add("{0, 2, 2, 3, 3, 4}");
             WildPkmn.add("{0, 2, 2, 3, 3, 4}");
             WildPkmn.add("{0, 2, 2, 3, 3, 4}");
             WildPkmn.add("{0, 18, 16, 12, 10, 8}");
             WildPkmn.add("{0, 18, 16, 12, 10, 8}");

     System.out.println("The tall grass has " +
                    WildPkmn.size() +
                    " arrays stored in it.");

     System.out.println("The Ultimate Pokemon is out there somewhere. " +
                  "It's your job to catch it!");

     Collections.shuffle(WildPkmn);
     System.out.println(WildPkmn);

     encounter(WildPkmn); // pass the variable WildPkmn to the encounter
  }

  public static void encounter(ArrayList<String> list /* Now the encounter() method expects a variable of type ArrayList*/){
    Collections.shuffle(list);
    System.out.println(list);
    System.out.println("You take a walk in the tall grass.");
  }
}
0 голосов
/ 06 декабря 2018

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

Вместо этого у вас есть две опции:

  1. Объявление переменной какстатическая переменная в вашем классе
  2. Или передайте переменную как параметр метода.

Кроме того, вам не хватает слова void между public static и encounter() - всеметоды в Java должны иметь возвращаемый тип, даже если они ничего не возвращают - и ваш окончательный } должен быть перемещен в конец файла - все методы в Java должны находиться внутри класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...