안녕하세요,이 코드를 읽으면서 파일을 읽으려고합니다. 파일을 읽은 후 파일의 각 문자의 ASCII 값을 가져와 대문자, 소문자 및 숫자의 빈도 카운터를 만들려고합니다.파일을 읽은 다음 ascii로 문자열을 변환하여 주파수 카운터를 만듭니다.
내 코드를 사용하여 파일을 읽으려고합니다. 그에 따라 각 배열에 배치하십시오. 그런 다음 배열을 주파수 카운터로 사용하여 대문자, 소문자 및 숫자가 있는지 확인할 수 있습니다. Counting.AddToArrays (Counting.java:64) 카운트에서
에서 스레드 "주요"java.lang.NullPointerException이
에서
예외 :
import java.io.*;
public class Counting
{
char[] upper;
char[] lower;
int[] num;
int u1 = 0;
int l1= 0;
int n1 = 0;
File inFile;
public void ReadFile(String nfile) throws IOException
{
inFile = new File(nfile);
BufferedReader reader = new BufferedReader(new FileReader(inFile));
//... Loop as long as there are input lines.
String speech = null;
//char[] charArray = null;
while ((speech = reader.readLine()) != null)
{
int slength = speech.length();
//charArray = speech.toCharArray();
AddToArrays(speech, slength);
}
//... Close reader and writer.
reader.close(); // Close to unlock.
}
public void AddToArrays(String c, int l)
{
/*for(int i = 0; i < l; i++)
{
if((int) c[u1] > 64 && (int) c[u1] < 91)
{
upper[u1] = c[i];
u1++;
}
if((int) c[l1] > 96 && (int) c[l1] < 123)
{
lower[l1] = c[i];
l1++;
}
if((int) c[n1] > 47 && (int) c[n1] < 58)
{
num[l1] = c[i];
n1++;
}
}*/
for(int i = 0; i < l ; i++)
{
char character = c.charAt(i);
int ascii = (int) character;
if(ascii > 64 && ascii < 91)
{
upper[u1] = character;
u1++;
}
if(ascii > 96 && ascii < 123)
{
lower[l1] = character;
l1++;
}
if(ascii > 47 && ascii < 58)
{
lower[n1] = character;
n1++;
}
}
}
public void DisplayResults(int u, int l, int n)
{
System.out.println("Upper characters: " + u);
System.out.println("lower characters: " + l);
System.out.println("Numbers: " + n);
}
public static void main(String[] args)
{
try
{
Counting rFile = new Counting();
rFile.ReadFile("Speech.txt");
rFile.DisplayResults(rFile.u1, rFile.l1, rFile.n1);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
나는 다음과 같은 오류를 얻을. ReadFile (Counting.java:29)
에서 Counting.main (Counting.java:93)
나는 최근에 자바 프로그래밍을 시작했다.
누구든지 도움을 주실 수 있으면 고맙습니다. 당신이이 배열의 요소에 액세스하려고 할 때, 당신이 NullPointerException
을 얻을 것이다
char[] upper;
char[] lower;
:
upper[u1] = character;
lower[l1] = character;
당신은 당신의 배열하고이를 초기화하는 코드에서 어떤 곳을 선언하는
안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 나는 그것을 시도했다. 정확히 어디에 넣어야할지 모르겠다. 나는 AddToArray 기능에 넣어했지만, 나는 오류 얻을 : 0 Counting.AddToArrays에서 \t (Counting.java:70) Counting.ReadFile에서 \t (계수 : 스레드 "주요"java.lang.ArrayIndexOutOfBoundsException에서 예외 .java : 30) \t at Counting.main (Counting.java:99) – loktd
@loktd 선언을 사용하여 초기화 할 수 있습니다. char upper = new char [desiredLength]; 또한 IndexOutOfBoundException은 배열 크기가 액세스하려는 인덱스보다 작음을 나타냅니다. –
오 감사합니다. 나는 연설의 정확한 문자를 몰랐기 때문에, 나는 desiredLength에 무엇을 사용해야할지 몰랐습니다. – loktd