我正在尝试创建一个包含大约 100 个名称的数组。我希望名称是我选择的名称,而不是随机生成的名称。因此 Array 的每个位置都将包含一个名称字符串。有没有比这更简单的方法Array[1] = "name; Array[2] = "name";
?我的想法是使用 for 循环从数据文件或文本文件中获取信息,但我不知道该怎么做。完成此任务的最简单方法是什么?
问问题
165 次
7 回答
5
如果您有一个按行命名的文件:
public static String[] getArrayStringRandom() {
try {
List<String> list = new LinkedList<String>();
FileReader fileReader = new FileReader("file.txt");
BufferedReader in = new BufferedReader(fileReader);
for (String name; (name = in.readLine()) != null;) {
list.add(name);
}
in.close();
fileReader.close();
// Collections.shuffle(list); // Random permutes
return list.toArray(new String[0]);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
于 2012-05-02T21:26:42.030 回答
2
您可以使用数组初始值设定项:
数组初始值设定项可以在声明中指定,或作为数组创建表达式的一部分,以创建数组并提供一些初始值。它被写成一个逗号分隔的表达式列表,用大括号
{
和. 括起来}
。
Array = new String[] {"name1", "name2", ..., "name100"};
于 2012-05-02T21:21:45.563 回答
0
或许是这样的。从文本文件中读取它也可以,但需要更多的努力,尽管它会更加动态。
String[] myArray = {"Jon","Mike","Dave","Ed","Ted","Shirly","Jane","Robert"};//etc
于 2012-05-02T21:23:42.377 回答
0
好吧,如果您已经在文本文件中列出了所有名称,那么解析 txt 文件并填充数组是一个有效的选择。
但是,如果您还没有以数字方式列出所有名称(也就是如果您将它们写在一张纸上)并且您知道它们不会更改,那么只需手动将它们添加到代码中。
但是,这样做的一个缺点是,如果您需要更新名称列表,则处理 txt 文件而不是硬代码要容易得多。
于 2012-05-02T21:23:49.803 回答
0
如果您需要用硬编码值填充数组,您可以使用
String stringArray = new String[]{ "Name1", "Name2", ... };
如果您想按照建议从文件中检索它,可以使用类似于
String stringArray = new String[100];
for( int i = 0; i < stringArray.length; i++ ){
stringArray[i]=retrieveNextValueFromFile();
}
于 2012-05-02T21:24:16.207 回答
0
初始化数组的最简单方法是:
String[] array = { "a", "b", "c", "d", "e" };
...但是,如果您打算从文件中读取名称,则必须将其一一存储:
List<String> list = new ArrayList<String>();
// ... read each name from the file
list.add(name);
// finally, convert the list to a String[]
String[] array = list.toArray(new String[list.size()]);
于 2012-05-02T21:24:45.540 回答
0
如果这只是为了测试家庭作业,您可以使用<
命令行工具传递文件和标准扫描仪。例子
import java.util.Scanner;
public class Example {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
String[] stringArray = new String[100];
for(int i = 0; i < 100; i++)
stringArray[i] = Scanner.nextLine();
}
}
现在,如果您有一个包含每一行名称的文件 (filename.txt),请从 cpprompt 调用该程序:
java Example < filename.txt
这对测试有好处...
于 2012-05-02T22:14:23.307 回答