Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入.readLine();进入我的字符串数组_Java - Fatal编程技术网

Java 插入.readLine();进入我的字符串数组

Java 插入.readLine();进入我的字符串数组,java,Java,我是这里的新程序员 简而言之,我的程序是:我正在使用一个虚拟足球交易计算器,使用球员价值来了解什么是好的交易 我的问题:我可以读取我的文件,计算位置,但无法将我的字符串添加到我的游戏名数组中。我得到null,请看我在for循环行中的迭代。我很好奇为什么我会得到一个空值?有什么办法吗 谢谢你,真的 *爪哇岛 String filename="C:\\Users\\Karanvir\\Desktop\\21days\\players.txt"; File filez=

我是这里的新程序员

简而言之,我的程序是:我正在使用一个虚拟足球交易计算器,使用球员价值来了解什么是好的交易

我的问题:我可以读取我的文件,计算位置,但无法将我的字符串添加到我的游戏名数组中。我得到null,请看我在for循环行中的迭代。我很好奇为什么我会得到一个空值?有什么办法吗

谢谢你,真的 *爪哇岛

        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);
}