繁体   English   中英

这是什么意思“一元运算符++的错误操作数类型字符串”

[英]What does this mean "bad operand type String for unary operator ++"

我无法弄清楚这里出了什么问题。 我的代码应该检查特定状态在 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 (int i = 0; i < list.size(); i++) {
            String wordToSearchFor = state[i];
            for (String state2 : list) {
                  if (state2.equals(wordToSearchFor)) {
                     state1[i]++;
                  }
            }
            System.out.println(state[i] + "="  + "["+ state1 +"]");
         }
         //
         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:34: error: bad operand type String for unary operator '++'
                     state1[i]++;
                              ^
1 error

您已将state1声明为String[] 所以state1[i]指的是String 您正在将运算符++应用于非法的String :因此出现错误。

如果您希望整数跟踪计数,则改为声明一个整数数组:

int[] stateCounts = new int[state.length];

然后,当您找到匹配项时,您可以愉快地增加计数:

stateCounts[i]++;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM