学校Java逃生室计划

学校Java逃生室计划,java,Java,我正在为学校写一个逃生室项目,里面有问候语、致胜信息、失利信息、,我将这些消息存储在一个文本文件中,然后读取该文件并将每一行存储到一个ArrayList中,然后通过各自的getter方法访问每一行,并使用.get函数及其索引值。我想知道是否有一种方法可以避免硬编码索引号,除此之外,还有一种方法可以在程序运行时读取文件,而不必创建类的实例,然后执行foo.readFile() 导入java.io.File; 导入java.util.Scanner; 导入java.io.FileNotFoundEx

我正在为学校写一个逃生室项目,里面有问候语、致胜信息、失利信息、,我将这些消息存储在一个文本文件中,然后读取该文件并将每一行存储到一个ArrayList中,然后通过各自的getter方法访问每一行,并使用
.get
函数及其索引值。我想知道是否有一种方法可以避免硬编码索引号,除此之外,还有一种方法可以在程序运行时读取文件,而不必创建类的实例,然后执行
foo.readFile()

导入java.io.File;
导入java.util.Scanner;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
//包装阶段;
公共类逃逸室{
ArrayList消息;
字符串文件名;
私有布尔赢=假;
public void readFile()引发FileNotFoundException{
Messages=newarraylist();
fileName=“test.txt”;
文件=新文件(文件名);
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine()){
Messages.add(scanner.nextLine());
}
scanner.close();
}   
公众问候语(){
System.out.println(Messages.get(0));
}
公共空间展示方向(){
System.out.println(Messages.get(1));
}
公众虚空showWin(){
System.out.println(Messages.get(2));
}
公众利益损失(){
System.out.println(Messages.get(3));
}
}

这正是属性文件的用途。下面是一个名为prompts.properties的文件:

greeting = "hello, welcome to my game"
win = "you win, yay"
loss = "sorry bro, you lose"
directions = "escape with your life!"
这是您修改的程序:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class EscapeRoom {

    Properties prompts = null;

    public void readFile() throws IOException {
        prompts = new Properties();
        prompts.load(new FileInputStream("prompts.properties"));
    }

    public void showGreeting() {
        System.out.println(prompts.get("greeting"));
    }

    public void showDirections() {
        System.out.println(prompts.get("directions"));
    }

    public void showWin() {
        System.out.println(prompts.get("win"));
    }

    public void showLoss() {
        System.out.println(prompts.get("loss"));
    }
}
基本上,要获得一个命名的键值对,您需要类似于映射的东西。属性实际上是一种特殊的映射,它可以理解格式为
=
的记录文件


这是关于的文档,如果您决定使用自己的,您将使用实现相同的基本功能。

这正是属性文件的用途。下面是一个名为prompts.properties的文件:

greeting = "hello, welcome to my game"
win = "you win, yay"
loss = "sorry bro, you lose"
directions = "escape with your life!"
这是您修改的程序:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class EscapeRoom {

    Properties prompts = null;

    public void readFile() throws IOException {
        prompts = new Properties();
        prompts.load(new FileInputStream("prompts.properties"));
    }

    public void showGreeting() {
        System.out.println(prompts.get("greeting"));
    }

    public void showDirections() {
        System.out.println(prompts.get("directions"));
    }

    public void showWin() {
        System.out.println(prompts.get("win"));
    }

    public void showLoss() {
        System.out.println(prompts.get("loss"));
    }
}
基本上,要获得一个命名的键值对,您需要类似于映射的东西。属性实际上是一种特殊的映射,它可以理解格式为
=
的记录文件


这是关于的文档,如果您决定使用自己的,您将使用实现相同的基本功能。

如果您确定这是您想要使用的最终结构,则硬编码是可以的。另一个选项:您可以为索引创建变量名,如类中的
private static final int GREETING=0
…DIRECTION=1
等,然后使用这些变量名(
Messages.get(GREETING)
等)。Java惯例是以小写字母开头变量名。它应该是
消息
而不是
消息
。如果您确定这是您要使用的最终结构,则硬编码是可以的。另一个选项:您可以为索引创建变量名,如类中的
private static final int GREETING=0
…DIRECTION=1
等,然后使用这些变量名(
Messages.get(GREETING)
等)。Java惯例是以小写字母开头变量名。应该是
messages
而不是
messages
。非常感谢你,我从来都不知道有这样的东西存在,我只上了一门java初学者课程,他们从来没有提到过这样的东西。谢谢你给我指明了正确的方向。有没有什么方法可以让我了解像这样更有用的内容?比如一本书的推荐书或其他什么?我没有一个很好的答案给你,但我不会让你挂断,我只想说你的问题很难回答:Java提供了大量现成的功能,因此一本书、教程、类等很容易就包含了功能“x”的介绍,而另一本书可能会遗漏。话虽如此,我认为更高层次的Java类或书籍都将包括对Map、Properties等内容的介绍。如果你从一条路开始,看看下一个课程,书,课程是否能让你更深入地了解更复杂的编程概念。祝你好运。另外,如果你都准备好了,你能接受这个答案吗?非常感谢你,我从来都不知道有这样的事情存在,我只上了一门java初学者的课,他们从来没有提到过这样的事情。谢谢你给我指明了正确的方向。有没有什么方法可以让我了解像这样更有用的内容?比如一本书的推荐书或其他什么?我没有一个很好的答案给你,但我不会让你挂断,我只想说你的问题很难回答:Java提供了大量现成的功能,因此一本书、教程、类等很容易就包含了功能“x”的介绍,而另一本书可能会遗漏。话虽如此,我认为更高层次的Java类或书籍都将包括对Map、Properties等内容的介绍。如果你从一条路开始,看看下一个课程,书,课程是否能让你更深入地了解更复杂的编程概念。祝你好运。另外,如果你都准备好了,你能接受这个答案吗?