Есть ли проблема в моем цикле между разбором символа в ascii и сравнением назначенного значения, которое я уже установил? - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть программа, которая берет информацию из текстового файла, а затем сообщает пользователю, сколько конкретных алфавитов, запятых, пробелов и периодов используется.Тем не менее, при выводе это показывает только 0 для всего. Мой текстовый файл содержит текст, и я подозреваю, что это может быть что-то с моим циклом, но я не уверен.

    //read from a file
    BufferedReader readFile= new BufferedReader(new FileReader("mytext.txt"));
    //Counts record
    while ((strInput=readFile.readLine())!=null)
    {
         intRecCount++;
    }

    character=new char[intRecCount];
    strRecord=new String[intRecCount];



    //open file
    readFile=new BufferedReader (new FileReader ("mytext.txt"));



    //input info
    for (int i=0;i<strRecord.length;i++)
    {
       strRecord[i]=readFile.readLine();
    }

    //input valyes one by one per record
    for (int i=0; i<strRecord.length;i++)
    {
        character[i]=strRecord[i].charAt(i);
        intCompare=(int)character[i];

        //for letters
        for (int x=0;x<=25;x++)
        {
            if (intCompare==intUpLetter[x])
            {
                intCounter[x]++;

            }

            if (intCompare==intLowLetter[x])
            {
                intCounter[x]++;

            }

        }
        // for the the 3 punction marks
        for (int y=0;y<=2;y++)
        {
            if (intCompare==intPunct[y])
            {
                intCounter[25+y]++;

            }


        }

       System.out.println("You have this many"+intCounter[0]+" A's");
       System.out.println("You have this many"+intCounter[1]+" B's");
       System.out.println("You have this many"+intCounter[2]+" C's");
       System.out.println("You have this many"+intCounter[3]+" D's");
       System.out.println("You have this many"+intCounter[4]+" E's");
       System.out.println("You have this many"+intCounter[5]+" F's");
       System.out.println("You have this many"+intCounter[6]+" G's");
       System.out.println("You have this many"+intCounter[7]+" H's");
       System.out.println("You have this many"+intCounter[8]+" I's");
       System.out.println("You have this many"+intCounter[9]+" J's");
       System.out.println("You have this many"+intCounter[10]+" K's");
       System.out.println("You have this many"+intCounter[11]+" L's");
       System.out.println("You have this many"+intCounter[12]+" M's");
       System.out.println("You have this many"+intCounter[13]+" N's");
       System.out.println("You have this many"+intCounter[14]+" O's");
       System.out.println("You have this many"+intCounter[15]+" P's");
       System.out.println("You have this many"+intCounter[16]+" Q's");
       System.out.println("You have this many"+intCounter[17]+" R's");
       System.out.println("You have this many"+intCounter[18]+" S's");
       System.out.println("You have this many"+intCounter[19]+" T's");
       System.out.println("You have this many"+intCounter[20]+" U's");
       System.out.println("You have this many"+intCounter[21]+" V's");
       System.out.println("You have this many"+intCounter[22]+" W's");
       System.out.println("You have this many"+intCounter[23]+" X's");
       System.out.println("You have this many"+intCounter[24]+" Y's");
       System.out.println("You have this many"+intCounter[25]+" Z's");
       System.out.println("You have this many"+intCounter[26]+" space's");
       System.out.println("You have this many"+intCounter[27]+" comma's");
       System.out.println("You have this many"+intCounter[28]+" periods'");
    }

Нет сообщений об ошибках, но вывод должен быть3 для каждого алфавита и знака препинания в списке. Однако 0 отображается для всех.

1 Ответ

0 голосов
/ 21 сентября 2019

Вы смотрите только на i-й символ i-й строки текста.Вам нужно два цикла, один цикл по строкам (который у вас есть) и один цикл по символам в каждой строке (которого вам не хватает).

Оригинал:

//input info
for (int i=0;i<strRecord.length;i++)
{
   strRecord[i]=readFile.readLine();
}

//input valyes one by one per record
for (int i=0; i<strRecord.length;i++)
{
    character[i]=strRecord[i].charAt(i);
    intCompare=(int)character[i];
        :
 }

Вам нужно что-то вроде

for (int i=0; i<strRecord.length;i++) {
    for (int j=0; j<strRecord[i].length; j++) {
         … deal with strRecord[i].charAt(j); …
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...