public class kmeansgeneral {
public static void main(final String args[]) throws Exception {
int words = 0;
int chars = 0;
int lines = 0;
String s, sp1;
StringTokenizer st;
final ArrayList<Double> x = new ArrayList<Double>();
final FileReader fr = new FileReader("G:/t1.txt");
final BufferedReader buf = new BufferedReader(fr);
// Counting number of words and lines
while ((s = buf.readLine()) != null) {
lines++;
st = new StringTokenizer(s, " ,;:.");
while (st.hasMoreTokens()) {
words++;
s = st.nextToken();
chars += s.length();
final Double y = new Double(s);
x.add(y);
}
}
System.out.println("Word Count : " + words/lines);
System.out.println("Line Count : " + lines);
// Counting and printing number of words and lines ENDS
Double ct[] = new Double[0];
ct = x.toArray(ct);
// Input array, values to be read in successively, float
// double[][] indat = new double[lines][lines*words];
final double[][] indat = new double[10][10];
int inval = 0;
final BufferedReader buf1 = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter K-Value : ");
sp1 = buf1.readLine();
final Integer ky = new Integer(sp1);
final int k = ky;
System.out.println("K == " + k);
// Now read in input array values, successively
for (int i = 0; i < lines; i++) {
for (int j = 0; j < words/lines; j++) {
indat[i][j] = ct[inval];
inval++;
System.out.print(indat[i][j]);
System.out.print("\t");
}
System.out.println();
}
// Initial Clusters
System.out.println(" ");
System.out.println(k + " seed points ");
final double[][] Clusters = new double[k][lines * words];
// double[][] calcnt = new double[lines][words];
final double[][] calcnt = new double[1000][1000];
final double[][] array = new double[k][lines * words];
System.out.println("Clusters==>");
// int pos=0;
for (int i = 0; i < k; i++) {
for (int j = 0; j < words/lines; j++) {
Clusters[i][j] = indat[i][j];
// pos= j;
System.out.print(Clusters[i][j]);
System.out.print("\t");
}
System.out.println();
}
System.out.println("PRINTING VECTOR ELEMENTS:");
final Vector FinalClusters[][] = new Vector[100][100];
for (int i = 0; i < k; i++) {
for (int j = 0; j < words/lines; j++) {
final String tempString = String.valueOf(Clusters[i][j]);
FinalClusters[i][j].add(tempString);
}
}
// Inital Cluster Array
System.out.println("Initial Cluster Array");
int b = 0;
final double[] arr = new double[2000];
for (int i = 0; i < k; i++) {
for (int j = 0; j < words/lines; j++) {
arr[b] = Clusters[i][j]; // = indat[i][j];
System.out.print(arr[b]);
System.out.print("\t");
b++;
}
}
System.out.println();
System.out.println("Centroids");
for (int i = 0; i < k; i++) {
for (int j = 0; j < words/lines; j++) {
calcnt[i][j] = (Clusters[i][j] + indat[k][j])/2;
System.out.print(calcnt[i][j]);
System.out.print("\t");
}
}
// Claculate Distances
// System.out.println("MAGIC# 3");
final double[] dist = new double[k];
for (int i = 0; i < k; i++) {
double dis = 0;
for (int j = 0; j < words/lines; j++) {
dis = dis + (Math.pow(Clusters[i][j] - indat[k][j], 2));
}
dist[i] = (Math.sqrt(dis));
System.out.println("From Cluster K = " + i + "\t" + "Distance" + dist[i]);
}
System.out.println("To Find Minimum Distance ");
double min = dist[0];
int y = 0;
for (int m = 0; m < k; m++) {
if (dist[m] < min) {
min = dist[m];
y = m;
}
}
System.out.print("Min Value =" + min + "\t" + "For Cluster :" + y);
System.out.println();
System.out.print("Added Cluster =");
final double[] temp = new double[lines * (words/lines)];
for (int j = 0; j < words/lines; j++) {
temp[j] = indat[k][j];
System.out.print(temp[j]);
System.out.print("\t");
}
System.out.println();
final Vector[] vector = new Vector[k];
for (int i = 0; i < k; i++) {
vector[i] = new Vector<Object>();
}
for (int i = 0; i < words/lines; i++) {
vector[y].add(String.valueOf(temp[i]));
}
System.out.println(Arrays.toString(vector));
}
}
답변
에서 nullpointer을 때렸어 :
t1.txt :
123
234
345
34456
출력 :
Word Count : 1
Line Count : 4
Enter K-Value : 3
K == 3
123.0
234.0
345.0
34456.0
3 seed points
Clusters==>
123.0
234.0
345.0
PRINTING VECTOR ELEMENTS:
Exception in thread "main" java.lang.NullPointerException
at test.kmeansgeneral.main(kmeansgeneral.java:106)
이 코드는 다음과 같습니다.
System.out.println("PRINTING VECTOR ELEMENTS:");
final Vector FinalClusters[][] = new Vector[100][100];
for (int i = 0; i < k; i++) {
for (int j = 0; j < words/lines; j++) {
final String tempString = String.valueOf(Clusters[i][j]);
// NPE OCCURS IN THE LINE BELOW
FinalClusters[i][j].add(tempString);
}
}
문제는 배열 'FinalClusters'에 빈 값이 아닌 null 값이 포함되어 있습니다. 그래서 여기에 수정이의, 선 위에 다음 줄을 추가 오류가 발생하는 위치 :
if (FinalClusters[i][j] == null) {
FinalClusters[i][j] = new Vector();
}
그런 다음 출력은 다음과 같습니다
Word Count : 1
Line Count : 4
Enter K-Value : 3
K == 3
123.0
234.0
345.0
34456.0
3 seed points
Clusters==>
123.0
234.0
345.0
PRINTING VECTOR ELEMENTS:
Initial Cluster Array
123.0 234.0 345.0
Centroids
17289.5 17345.0 17400.5 From Cluster K = 0 Distance34333.0
From Cluster K = 1 Distance34222.0
From Cluster K = 2 Distance34111.0
To Find Minimum Distance
Min Value =34111.0 For Cluster :2
Added Cluster =34456.0
[[], [], [34456.0]]
나는 이것이 어떻게해야 무슨 단서가없는, 이것이 옳은지 알 수 없습니다. 적어도 예외는 더 이상 발생하지 않습니다.
감사합니다.이 도움이되었습니다 ... 그리고 이것은 내 첫 번째 질문이었습니다 ... 그래서 , 나는 내가 정말로 문구에 관한 howw를 정말로 didnt한다라고 생각한다. .. 나의 긍정 (그것이 나의 비상 경계 태울과 조우했던 지역이었다). – wave5459
먼저 문제를 명확하게하기 위해 게시물을 redit해야합니다.
그런 다음 관련없는 코드를 모두 제거하십시오.
그런 다음 stacktrace를 보면 어떤 줄이 잘못되었는지, 그 줄을 게시해야하는지 알려줍니다. 그것은 당신의 오류가 어레이 initiliase했던 것입니다 다음의 경우
FinalClusters[i][j].add(tempString);//is it this line ?
// where did you initialise FinalClusters[i][j] ??
// maybe you first need FinalClusters[i][j] = new Vector();
:
나는 내가 그에게 줄을 가정 그와 하나가 ** 그렇지 않으면 코드가 너무
컴파일되지 것 같아요 배열의 개별 요소는 아닙니다.
사이드 노트 : 정말 벡터 배열이 필요합니까?
감사합니다 !! 다음 번에 내 질문을 더 명확하게 게시 할 것입니다! 이것은 나의 처음 여기의 시간이었다. 그리고 예, 나는 매번 같은 정적 텍스트 파일을 사용할 생각이 없기 때문에 벡터 배열이 필요합니다. – wave5459
추측 해 보겠습니다.이 코드를 Eclipse 또는 jvm에 콘솔을 사용할 수없는 일부 편집기에서 디버깅하는 중 오류가 발생했을 수 있습니다. 이 경우 다음의 경우
당신은 아마 나는 다음과 같은 입력 파일에 대한 코드를 실행 sp1 = buf1.readLine();
- 1. . 내가 도대체 뭘 잘못하고있는 겁니까?
- 2. sed 문제. 내가 도대체 뭘 잘못하고있는 겁니까?
- 3. 디스플레이로드? 내가 도대체 뭘 잘못하고있는 겁니까?
- 4. 연결된 목록 인쇄. 내가 도대체 뭘 잘못하고있는 겁니까?
- 5. Mono.TextEditor가 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 6. Struts가 내 서블릿을 호출하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 7. SqlBulkCopy WriteToServer 예제입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 8. LLVM JIT 오류. 내가 도대체 뭘 잘못하고있는 겁니까?
- 9. 힘내에서 많은 커밋을 1로 수정하십시오. 내가 도대체 뭘 잘못하고있는 겁니까?
- 10. 이름 xxx는 현재 컨텍스트에 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 11. 초급 질문 : 직사각형을 그립니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 12. Android에서 EditText 확장하기. 내가 도대체 뭘 잘못하고있는 겁니까?
- 13. 바이트 배열을 소스로 사용하여 이미지 객체를 만들려고합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 14. Entity Framework 4 단방향 탐색/관계. 내가 도대체 뭘 잘못하고있는 겁니까?
- 15. multibyte ANSI를 varargs에 PInvoke 할 수 있습니까? 내가 도대체 뭘 잘못하고있는 겁니까?
- 16. HTML5 File API는 항상 [object file]의 DataURI를 반환합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 17. 데이터베이스 역할에 스키마에 대한 실행 권한을 부여하려면 어떻게합니까? 내가 도대체 뭘 잘못하고있는 겁니까?
- 18. jQuery 자동 완성으로 아무 것도 반환 할 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 19. 어떻게 gridView 페이지가 삽입 또는 업데이트 또는 새로 고침되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 20. 파이썬 임시 파일 모듈과 스레드가 훌륭하게 재생되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 21. Jquery/Javascript : 로컬 저장 장치 플러그인에서 색인을 저장할 수 없습니까? 내가 도대체 뭘 잘못하고있는 겁니까?
- 22. PHP 오류 : "정의되지 않은 함수 AddUser()"호출. 내가 도대체 뭘 잘못하고있는 겁니까?
- 23. 등록하는 각 사용자에 대해 데이터베이스 테이블을 만들려고합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 24. Google App Engine의 Datastore에서 하위 항목을 부모에게 할당 할 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 25. 첫 번째 자녀가 여기에서 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 26. Azure, WCF, REST, SSL 프로젝트를 사용할 수없는 이유는 무엇입니까? 내가 도대체 뭘 잘못하고있는 겁니까?
- 27. 나는 계속 제어가 끝나면 무효 기능이 끝난다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 28. 식 혼합을 사용하여 목록 상자에서 항목의 템플릿을 정의합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 29. jEditorPane를 확장 해 메모리로부터 버퍼링 된 이미지를 표시해, 표시했지만, 올바르게 페인트하지 않았습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
- 30. Android OS 2.2 권한 :이 간단한 코드가 왜 효과가 없는지 전혀 알 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
올바른 코드 형식을 지정하고 NPE의 스택 추적을 표시하십시오. –
코드 라인에 –
rofl, k- 수단을 코딩하지만 그가 어디에서 NPE를 얻는 지 알지 못합니다. –