Java 插入.readLine();进入我的字符串数组
我是这里的新程序员 简而言之,我的程序是:我正在使用一个虚拟足球交易计算器,使用球员价值来了解什么是好的交易 我的问题:我可以读取我的文件,计算位置,但无法将我的字符串添加到我的游戏名数组中。我得到null,请看我在for循环行中的迭代。我很好奇为什么我会得到一个空值?有什么办法吗 谢谢你,真的 *爪哇岛Java 插入.readLine();进入我的字符串数组,java,Java,我是这里的新程序员 简而言之,我的程序是:我正在使用一个虚拟足球交易计算器,使用球员价值来了解什么是好的交易 我的问题:我可以读取我的文件,计算位置,但无法将我的字符串添加到我的游戏名数组中。我得到null,请看我在for循环行中的迭代。我很好奇为什么我会得到一个空值?有什么办法吗 谢谢你,真的 *爪哇岛 String filename="C:\\Users\\Karanvir\\Desktop\\21days\\players.txt"; File filez=
String filename="C:\\Users\\Karanvir\\Desktop\\21days\\players.txt";
File filez=new File(filename);
BufferedReader br;
String[] playerNames = null;
int counterOfReadLines=0;
try {
br = new BufferedReader(new FileReader(filez));
System.out.println(br.readLine());
counterOfReadLines=counterOfReadLines+1;
while(br.readLine() != null){
System.out.println(br.readLine());
counterOfReadLines=counterOfReadLines+1;
playerNames=new String[counterOfReadLines];
}
for(int i=0;i<playerNames.length;i++){
playerNames[i]=br.readLine();
}
br.close();
readLine的正常用法是:
List<String> lines = new ArrayList<>();
for (;;) {
String line = br.readLine();
if (line == null) { // End of input reached.
break;
}
System.out.println(line);
lines.add(line);
}
for (String line : lines) {
System.out.println(line);
}
List line=new ArrayList();
对于(;;){
String line=br.readLine();
如果(line==null){//到达输入的末尾。
打破
}
系统输出打印项次(行);
行。添加(行);
}
用于(字符串行:行){
系统输出打印项次(行);
}
数组不会增长,因此最好使用ArrayList
while(br.readLine() != null){
System.out.println(br.readLine());
counterOfReadLines=counterOfReadLines+1;
playerNames=new String[counterOfReadLines];
}
for(int i=0;i<playerNames.length;i++){
playerNames[i]=br.readLine();
}
正在读取一行,检查它是否为空,然后丢弃它
System.out.println(br.readLine());
playerNames=new String[counterOfReadLines];
正在读取另一行,打印它,然后丢弃它
System.out.println(br.readLine());
playerNames=new String[counterOfReadLines];
正在创建一个新数组,其中填充了空值
你从未在数组中放入任何东西
现在:
我否决了这个问题,因为这里的代码太多了。为了明确你的问题所在,请删除任何不直接导致你的问题的代码,如果你能把它减少到十行或更少,我会考虑撤回投票。请看:你能在
players.txt
文件中写几行吗?好的,请稍等片刻,对不起,盖伊,伙计们做了调整,希望他们能做到standards@Karanvir1这太冗长了。您需要准确地显示代码的哪一部分提供了与预期不同的行为,以及您将期望的行为。这看起来非常复杂,我对您的答案有很多看法。通过每次读取一行时递增,我已将数组长度指定给保存所有值所需的长度。是否可以使用类似的代码风格来解决我的问题?或者我应该开始使用ArrayList吗?进一步说,如果您确实需要数组,您可以始终使用toArray(新字符串[0])
。另外,字符串行=null;而((line=br.readline())!=null){…
循环的版本对我来说总是比较容易理解,但也许这只是因为我先说出来了。@Andy Turner在我最初评论时添加了一个完整的例子,并进行了解释哇,谢谢,我喜欢你的答案。我还是个傻瓜,你有什么建议吗?如果我使用的是定义为我感谢你的帮助!“为什么我的阵型在这里很重要?”部分原因是当你不再使用规定数量的玩家时。如果你愿意,你可以使用固定大小的数组,但你只是在为自己做不必要的工作:然后你必须跟踪你已经分配的列表中的元素数量,这样你就知道下一步要分配哪个元素,要使用多少等。谢谢,我正在更改我的c我们说的是ode。至于我之前使用的数组,你介意告诉我为什么它不起作用吗?我知道以后不会再犯同样的错误。我看到它被读取,然后被丢弃,但是否可以使用普通数组?我的逻辑出了什么问题,所以我可以像你一样思考。你显然是代码之王,软件google的软件工程师!正如我已经解释过的:您从未将从文件中读取的数据添加到数组中。您读取它,然后丢弃它。
List<String> playerNames = new ArrayList<>();
String line;
// This reads a line, and stores it in a variable, so you can use
// the String you read inside the loop body.
while ((line = br.readLine()) != null) {
System.out.println(line);
// Don't need counterOfReadLines, just use playerNames.size().
playerNames.add(line);
}