Hallo. Ich versuche gerade ein Programm zu schreiben das Buchstaben zählt und darstellt. Leider endet meine Beschriftung mit dem Buchstaben k, obwohl z der letzte ist. Als Fehlermeldung in der Konsole bekomme ich:
und hier ist mein Code:
Ich hoffe ihr könnt mir helfen, ich hab nämlich keine Ahnung warum einer meiner Strings null ist.
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: String is null
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:3045)
at CTemperatur$CMeineCanvas.paint(CTemperatur.java:251)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:276)
at sun.awt.RepaintArea.paint(RepaintArea.java:241)
at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263)
at java.awt.Component.dispatchEventImpl(Component.java:4813)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:643)
at java.awt.EventQueue$1.run(EventQueue.java:641)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:657)
at java.awt.EventQueue$2.run(EventQueue.java:655)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
und hier ist mein Code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CTemperatur extends JFrame {
CMeineCanvas malflaeche;
CTemperatur() {
setLayout(new FlowLayout());
malflaeche = new CMeineCanvas();
add(malflaeche);
addWindowListener(new CMeinWindowLauscher());
}
class CMeinWindowLauscher extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class CMeineCanvas extends Canvas {
CMeineCanvas() {
setBackground(Color.white);
setForeground(Color.red);
}
public void paint(Graphics g) {
int[] Counter = new int[27];
String[] Zeit= new String[27];
Counter[0]=0;
Counter[1]=0;
Counter[2]=0;
Counter[3]=0;
Counter[4]=0;
Counter[5]=0;
Counter[6]=0;
Counter[7]=0;
Counter[8]=0;
Counter[9]=0;
Counter[10]=0;
Counter[11]=0;
Counter[12]=0;
Counter[13]=0;
Counter[14]=0;
Counter[15]=0;
Counter[16]=0;
Counter[17]=0;
Counter[18]=0;
Counter[19]=0;
Counter[20]=0;
Counter[21]=0;
Counter[22]=0;
Counter[23]=0;
Counter[24]=0;
Counter[25]=0;
Counter[26]=0;
Zeit[0]="A";
Zeit[1]="B";
Zeit[2]="C";
Zeit[3]="D";
Zeit[4]="E";
Zeit[5]="F";
Zeit[6]="G";
Zeit[7]="H";
Zeit[8]="I";
Zeit[9]="J";
Zeit[10]="K";
Zeit[12]="M";
Zeit[13]="N";
Zeit[14]="O";
Zeit[15]="P";
Zeit[16]="Q";
Zeit[17]="R";
Zeit[18]="S";
Zeit[19]="T";
Zeit[20]="U";
Zeit[21]="V";
Zeit[22]="W";
Zeit[23]="X";
Zeit[24]="Y";
Zeit[25]="Z";
Zeit[26]="leer";
g.drawLine(0,560,600,560);
int AB=1;
int Buchstabe=26;
int lange;
StringBuffer text = new StringBuffer("j");
lange=text.length();
for(int i=0;i<lange;i++)
{
if(text.charAt(i)==('a'))
{
Counter[1]=Counter[1]+5;
}
if(text.charAt(i)==('b'))
{
Counter[2]=Counter[2]+5;
}
if(text.charAt(i)==('c'))
{
Counter[3]=Counter[3]+5;
}
if(text.charAt(i)==('d'))
{
Counter[4]=Counter[4]+5;
}
if(text.charAt(i)==('e'))
{
Counter[5]=Counter[4]+5;
}
if(text.charAt(i)==('f'))
{
Counter[6]=Counter[5]+5;
}
if(text.charAt(i)==('g'))
{
Counter[7]=Counter[6]+5;
}
if(text.charAt(i)==('h'))
{
Counter[8]=Counter[7]+5;
}
if(text.charAt(i)==('i'))
{
Counter[9]=Counter[8]+5;
}
if(text.charAt(i)==('j'))
{
Counter[10]=Counter[9]+5;
}
if(text.charAt(i)==('k'))
{
Counter[11]=Counter[10]+5;
}
if(text.charAt(i)==('l'))
{
Counter[12]=Counter[11]+5;
}
if(text.charAt(i)==('m'))
{
Counter[13]=Counter[12]+5;
}
if(text.charAt(i)==('n'))
{
Counter[14]=Counter[13]+5;
}
if(text.charAt(i)==('o'))
{
Counter[15]=Counter[14]+5;
}
if(text.charAt(i)==('p'))
{
Counter[16]=Counter[15]+5;
}
if(text.charAt(i)==('q'))
{
Counter[17]=Counter[16]+5;
}
if(text.charAt(i)==('r'))
{
Counter[18]=Counter[17]+5;
}
if(text.charAt(i)==('s'))
{
Counter[19]=Counter[18]+5;
}
if(text.charAt(i)==('t'))
{
Counter[20]=Counter[19]+5;
}
if(text.charAt(i)==('u'))
{
Counter[21]=Counter[20]+5;
}
if(text.charAt(i)==('v'))
{
Counter[22]=Counter[21]+5;
}
if(text.charAt(i)==('w'))
{
Counter[23]=Counter[22]+5;
}
if(text.charAt(i)==('x'))
{
Counter[24]=Counter[23]+5;
}
if(text.charAt(i)==('y'))
{
Counter[25]=Counter[24]+5;
}
if(text.charAt(i)==('z'))
{
Counter[26]=Counter[25]+5;
}
}
for(int i=0;i<27;i++)
{
g.setColor(Color.black);
g.drawString(Zeit[i],Buchstabe,590);
g.setColor(Color.black);
if(Counter[i]>0){
g.fillRect(AB,550-(Counter[i]*10),15,(Counter[i]*10)+10);
}
if(Counter[i]<0){
g.fillRect(AB,150,15,(Counter[i]*-10)+10);
}
AB=AB+25 ;
Buchstabe=Buchstabe+25;
}
}
public Dimension getMinimumSize() {
return new Dimension(600,600);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
public static void main(String args[]) {
CTemperatur fenster = new CTemperatur();
fenster.pack();
fenster.setSize(800,800);
fenster.setVisible(true);
}
}
Ich hoffe ihr könnt mir helfen, ich hab nämlich keine Ahnung warum einer meiner Strings null ist.