对一个基本问题的道歉,因为这是我有史以来第一次编程课。
我已经过去了 this和this,我很肯定这是在指我的问题,但有人可以细分这些对我的影响吗?
通过反复试验,我知道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.");
}
答案 0 :(得分:1)
您的问题与这两个问题无关。您正在尝试访问其他方法的局部变量。根据定义,这是行不通的,因为局部变量仅在声明它们的方法内可见。
相反,您有两个选择:
此外,您在void
和public static
之间缺少encounter()
一词-Java中的所有方法都必须具有返回类型,即使它们什么也不返回-以及最终的{{ 1}}需要移到文件末尾-Java中的所有方法都必须在一个类中。
答案 1 :(得分:1)
无需为这个问题道歉。在这种情况下,这里是提出有关Java问题的正确位置。
从您发布的代码中可以明显看出一件事。您缺乏Java基础知识,因此您应该学习该语言以理解它们。
出了什么问题
如果您编译代码,则编译器将向您显示(语法上的)错误,如下所示。
您正在代码中使用ArrayList
类,但没有在任何地方定义 此类。编译器尝试在文件中搜索其定义,但失败了,因此它不知道ArrayList
对象的作用。
代码中的一个示例是在add()
类型的WildPkmn
对象上调用ArrayList
方法。
WildPkmn.add("{0, 0, 1, 1, 2, 2}");
ArrayList
类是一个著名的Java类,它是defined in the java.util package。因此,您需要导入此类,以便编译器可以引用此定义。这是通过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.");
}
}