как исправить мой адрес памяти для печати кода - PullRequest
0 голосов
/ 24 февраля 2020

Я не могу понять, что здесь не так. мой код должен проверять, сколько раз указывается состояние c в CSV-файле с 1 столбцом. Я думаю, что он печатает адрес, в котором он сохранен, но я не знаю, как это исправить. Он также должен печатать все состояния, но это не так.

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"};
         int[] stateCounts = new int[state.length];
         for (int i = 0; i < list.size(); i++) 
         {
            String wordToSearchFor = state[i];
            for (String state2 : list) 
            {
               if (state2.equals(wordToSearchFor)) 
               {
                  stateCounts[i]++;
               }
            }
            System.out.println(state[i] + "="  + "["+ stateCounts +"]");
         }
         //
         //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.");
      }
   }
}

И это вывод. Как я уже говорил ранее, я думаю, что это адреса памяти, но я не знаю, как это исправить

Alabama=[[I@1db9742]
Alaska=[[I@1db9742]
Arizona=[[I@1db9742]
Arkansas=[[I@1db9742]
California=[[I@1db9742]
Colorado=[[I@1db9742]
Connecticut=[[I@1db9742]
Delaware=[[I@1db9742]
Florida=[[I@1db9742]
Georgia=[[I@1db9742]
Hawaii=[[I@1db9742]
Idaho=[[I@1db9742]
Illinois=[[I@1db9742]
Indiana=[[I@1db9742]
Iowa=[[I@1db9742]
Kansas=[[I@1db9742]
Kentucky=[[I@1db9742]
Louisiana=[[I@1db9742]
Maine=[[I@1db9742]
Maryland=[[I@1db9742]
Massachusetts=[[I@1db9742]
Michigan=[[I@1db9742]
Minnesota=[[I@1db9742]
Mississippi=[[I@1db9742]
Missouri=[[I@1db9742]
Montana=[[I@1db9742]
Nebraska=[[I@1db9742]
Nevada=[[I@1db9742]
New Hampshire=[[I@1db9742]
New Jersey=[[I@1db9742]
New Mexico=[[I@1db9742]
New York=[[I@1db9742]
North Carolina=[[I@1db9742]
North Dakota=[[I@1db9742]
Ohio=[[I@1db9742]

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

state1 - это массив строк, а не строка:

System.out.println(state[i] + "="  + "["+ state1 +"]");

Массив не реализует toString, поэтому он печатает реализацию toString объекта по умолчанию, которая печатает адрес памяти.

Возможно, вы хотели написать:

System.out.println(state[i] + "="  + "["+ state1[i] +"]");

Если нет, вам нужно будет преобразовать state1 в строку самостоятельно или в List (класс List имеет реализацию toString).

0 голосов
/ 24 февраля 2020

При печати массива необходимо использовать следующее:

System.out.println(Arrays.toString(array));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...