【问题标题】:Why is this claiming that i dont have brackets []为什么这声称我没有括号 []
【发布时间】:2020-02-23 20:59:58
【问题描述】:

我不知道这里出了什么问题。我的代码应该检查特定状态在 1 列 csv 文件中出现的次数。我试图避免为每个单独的州设置单独的计数器

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

public class csvtxt {

   public static void main(String a[]){
      StringBuilder sb = new StringBuilder();
      String strLine = "";
      List<String> list = new ArrayList<String>();
      try {
         BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\dbb38\\Downloads\\customers_export_1111 - customers_export_1.csv"));
         while (strLine != null)
         {
            strLine = br.readLine();
            if (strLine==null)
               break;
            sb.append(strLine);
            sb.append(System.lineSeparator());
            list.add(strLine);
         }
         String[] state = new String[]{"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"};
         String[] state1 = new String[]{"Alabama1", "Alaska1", "Arizona1", "Arkansas1", "California1", "Colorado1", "Connecticut1", "Delaware1", "Florida1", "Georgia1", "Hawaii1", "Idaho1", "Illinois1", "Indiana1", "Iowa1", "Kansas1", "Kentucky1", "Louisiana1", "Maine1", "Maryland1", "Massachusetts1", "Michigan1", "Minnesota1", "Mississippi1", "Missouri1", "Montana1", "Nebraska1", "Nevada1", "New Hampshire1", "New Jersey1", "New Mexico1", "New York1", "North Carolina1", "North Dakota1", "Ohio1", "Oklahoma1", "Oregon1", "Pennsylvania1", "Rhode Island1", "South Carolina1", "South Dakota1", "Tennessee1", "Texas1", "Utah1", "Vermont1", "Virginia1", "Washington1", "West Virginia1", "Wisconsin1", "Wyoming1"};
         for(i=0; i<list.size; i++)
         {
            String wordToSearchFor = state[i];
            String[] state1[i] = 0;
            for(String state2 : list)
            {
               if(state2.equals(wordToSearchFor)) 
               {
                  state1[i]++;
               }
         }
         System.out.println(state[i] + "="  + "["+ Vermont +"]");
         }
         //
         System.out.println(Arrays.toString(list.toArray()));
         br.close();
      } catch (FileNotFoundException e) {
         System.err.println("File not found");
      } catch (IOException e) {
         System.err.println("Unable to read the file.");
      }
   }
}

这是我得到的错误。我不知道为什么我会收到它,我试图更换它并放回它。

csvtxt.java:31: error: ']' expected
            String[] state1[i] = 0;
                            ^
csvtxt.java:31: error: illegal start of expression
            String[] state1[i] = 0;
                             ^
2 errors

【问题讨论】:

  • state1[i] = 0 会不会更准确?您无需为已定义的对象提供定义
  • 我还要补充一点,一旦您解决了当前突出显示为错误的问题; state1[i]++; 会导致一个。 Strings 没有 ++ 运算符。

标签: java arrays csv arraylist


【解决方案1】:

这是java之初向后兼容C/C++的结果。 数组声明:

int[] x;

可以写成C风格:

int x[];

所以在你的情况下,预计会有一个混合:

String[] state1[] = ...;

又名

String[][] state1 = ...;

代表二维字符串矩阵/数组。错误是在[i] 中遇到i 而不仅仅是[]

您打算做的是分配给一个元素。

    int[] state1 = new int[list.size()];
    for (int i = 0; i < list.size; i++) {
        // state1[i] = 0; // Not needed already 0.
        String wordToSearchFor = state[i];
        for (String state2 : list) {
            if (state2.equals(wordToSearchFor)) {
                state1[i]++;
            }
        }
        System.out.println(state[i] + "="  + "["+ Vermont +"]");
    }

【讨论】:

  • 第一行是做什么的?
  • int[] state1 声明一个整数数组。 new int[10] 创建一个由 10 个整数组成的数组,全为零。
【解决方案2】:
        String[] state1[i] = 0;

这不是正确的 java 语法,而是这样做:

String[] arrayName = {"0"};

或者如果你想把 state1 中的所有东西都设置为 0,可以这样操作:

state1[i] = {"0"};

我不知道你是不是想把 0 作为一个值,如果是这样,你可能想使用一个 int[] 数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多