Char in String umwandeln

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hallo!

ich bin neueinsteiger in java und möchte gerne wissen wie man char in string umwandelt. char und KEIN char array.
also das der string wert nur einen buchstaben beinhaltet und ihn dann in einen string umwandelt. die arrayversion will ich nicht, da sie dann probleme bei meinem programm veruhrsacht.

hier noch das was ich machen will:
Code:
do
            {
                durchgang = durchgang + 1;
                
                text1 = jTextPane1.getText();
		ch[durchgang] = text1.charAt(durchgang);
                //zahl = jTextField1.getInt();
				//Speichern(ch, durch);
				zahl = (int) ch;
			
				if(zahl <= 90 && zahl >= 65)
				{
					zahl = zahl + kon;
				
					if(zahl > 90) 
					{
						zahl = zahl - 26;
						ch = (char)zahl;
                                                text1 = new String(ch);
						jTextPane1.setText(text1);
					} else {
						ch = (char)zahl;
						//jTextPane1.setText(ch);
					}
				} 
				else if(zahl <= 122 && zahl >= 97)
				{
					zahl = zahl + kon;
				
					if(zahl > 122)
					{
						zahl = zahl - 26;
						ch = (char)zahl;
						//jTextPane1.setText(ch);
					} else {
						ch = (char)zahl;
						//jTextPane1.setText(ch);
					}
				}
				else
				{
					ch = (char)zahl;
					System.out.print(ch);
				}
			} while(ch != '.');

also ich gebe was ein und dann verwandle ich es in den ascii code. rutsche dann einige stellen weiter und will das dann wieder in einen string umwandeln, damit ich es dann beim jtextpane ausgeben kann.
danke im voraus!
 
wie gesagt, bin anfänger und die api sagt mir nichts. kann mir vielleicht einer bitte ein stück quellcode geben wie das geht?
danke
 
String.valueOf(char c);

Aber wie schon gesagt wurde. API gucken.

Code:
static String valueOf(char c) 
                          Returns the string representation of the char argument.
 
Gast hat gesagt.:
die arrayversion will ich nicht, da sie dann probleme bei meinem programm veruhrsacht.
Wenn du in den Quelltext von String.valueOf(char) schaust, wirst du aber genau das finden. In diesem Fall wird ein privater Konstruktor benutzt, um das Feld direkt zu verwenden.
Code:
    public static String valueOf(char c) {
        char data[] = {c};
        return new String(0, 1, data);
    }
 
so. habs dann mit einem char array gemacht. und jetzt bekomme ich zwar keine errors, es startet aber nicht. hier mal der quellcode:

Code:
public void Verarbeitung()
    {
        text1 = jTextPane1.getText();
        stellen = text1.length();
        
        for(int i = 0; i < stellen; ++i)
        {
            durchgang = durchgang + 1;
                
            zahl  = (int) ch[i];
            textgespeichert = "";
			
				if(zahl <= 90 && zahl >= 65)
				{
					zahl = zahl + kon;
				
					if(zahl > 90) 
					{
						zahl = zahl - 26;
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					} else {
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					}
				} 
				else if(zahl <= 122 && zahl >= 97)
				{
					zahl = zahl + kon;
				
					if(zahl > 122)
					{
						zahl = zahl - 26;
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					} else {
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					}
				}
				else
				{
					ch[i] = (char)zahl;
					textgespeichert = textgespeichert + String.valueOf(ch[i]);
					//System.out.print(ch);
				}
			} //while(durch == 7);
        
                        System.out.println(textgespeichert);
    }

bekomme diese fehlermeldungen:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at NewJFrame.Verarbeitung(NewJFrame.java:229)
at NewJFrame.jButton1ActionPerformed(NewJFrame.java:204)
at NewJFrame.access$100(NewJFrame.java:11)
at NewJFrame$2.actionPerformed(NewJFrame.java:87)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


die konsolenumsetzung funktionier einwandfrei!

danke im voraus!
 
Poste mal diesen Code-Abschnitt:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at NewJFrame.Verarbeitung(NewJFrame.java:229)

Um genau zu sein einen Code-Abschnitt um Zeile 229 herum.

Wahrscheinlich ist deine NewJFrame oder so nicht initialisiert worden.
 
Benutze doch einfach einen StringBuilder oder StringBuffer. Dann verschwindet auch dein char/String-Problem.
 
das hier ist in der 229 zeile:

Code:
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }


hier das ganze programm:

Code:
/*
 * NewJFrame.java
 *
 * Created on 16. Oktober 2005, 14:42
 */

/**
 *
 * @author  DOMINIK
 */

import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;

public class NewJFrame extends javax.swing.JFrame {
    
    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextPane1 = new javax.swing.JTextPane();
        jLabel3 = new javax.swing.JLabel();
        jPasswordField1 = new javax.swing.JPasswordField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jTextPane2 = new javax.swing.JTextPane();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jPasswordField2 = new javax.swing.JPasswordField();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem4 = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JSeparator();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jPanel1.setLayout(null);

        jLabel1.setText("Um wieviele Stellen soll der Text codiert werden?");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(10, 20, 283, 16);

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jPanel1.add(jTextField1);
        jTextField1.setBounds(10, 40, 80, 21);

        jLabel2.setText("Geben Sie hier den Text ein, den Sie codieren wollen:");
        jPanel1.add(jLabel2);
        jLabel2.setBounds(10, 80, 340, 16);

        jPanel1.add(jTextPane1);
        jTextPane1.setBounds(10, 100, 370, 90);

        jLabel3.setText("Geben Sie hier bitte Ihr Passwort ein:");
        jPanel1.add(jLabel3);
        jLabel3.setBounds(10, 230, 300, 16);

        jPanel1.add(jPasswordField1);
        jPasswordField1.setBounds(10, 250, 120, 27);

        jButton1.setText("Ok");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jPanel1.add(jButton1);
        jButton1.setBounds(300, 260, 79, 25);

        jButton2.setText("\u00d6ffnen");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jPanel1.add(jButton2);
        jButton2.setBounds(300, 200, 79, 25);

        jTabbedPane1.addTab("tab1", jPanel1);

        jPanel2.setLayout(null);

        jLabel4.setText("Um wieviele Stellen soll der Text decodiert werden?");
        jPanel2.add(jLabel4);
        jLabel4.setBounds(10, 20, 320, 16);

        jPanel2.add(jTextField2);
        jTextField2.setBounds(10, 40, 80, 21);

        jPanel2.add(jTextPane2);
        jTextPane2.setBounds(10, 100, 370, 90);

        jLabel5.setText("Geben Sie hier den Text ein, den Sie decodieren wollen:");
        jPanel2.add(jLabel5);
        jLabel5.setBounds(10, 80, 350, 16);

        jLabel6.setText("Geben Sie hier bitte Ihr Passwort ein:");
        jPanel2.add(jLabel6);
        jLabel6.setBounds(10, 230, 260, 16);

        jPanel2.add(jPasswordField2);
        jPasswordField2.setBounds(10, 250, 120, 27);

        jButton3.setText("\u00d6ffnen");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jPanel2.add(jButton3);
        jButton3.setBounds(300, 200, 79, 25);

        jButton4.setText("Ok");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jPanel2.add(jButton4);
        jButton4.setBounds(300, 260, 79, 25);

        jTabbedPane1.addTab("tab2", jPanel2);

        getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);

        jMenu1.setText("Datei");
        jMenuItem1.setText("\u00d6ffnen");
        jMenu1.add(jMenuItem1);

        jMenu1.add(jSeparator1);

        jMenuItem5.setText("Schlie\u00dfen");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem5);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Hilfe");
        jMenuItem4.setText("Hilfe");
        jMenu2.add(jMenuItem4);

        jMenu2.add(jSeparator2);

        jMenuItem2.setText("\u00dcber StecknSoft");
        jMenu2.add(jMenuItem2);

        jMenuItem3.setText("\u00dcber StecknCodierer");
        jMenu2.add(jMenuItem3);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        pack();
    }

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        System.exit(0);
    }                                          


    
    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Object source = evt.getSource();
        
        if(source == jButton1)
        {
            Verarbeitung();
        }
    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    
    
    public void Verarbeitung()
    {
        text1 = jTextPane1.getText();
        stellen = text1.length();
        
        for(int i = 0; i < stellen; ++i)
        {       
            zahl  = (int)ch[i];
            textgespeichert = "";
			
				if(zahl <= 90 && zahl >= 65)
				{
					zahl = zahl + kon;
				
					if(zahl > 90) 
					{
						zahl = zahl - 26;
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					} else {
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					}
				} 
				else if(zahl <= 122 && zahl >= 97)
				{
					zahl = zahl + kon;
				
					if(zahl > 122)
					{
						zahl = zahl - 26;
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					} else {
						ch[i] = (char)zahl;
						textgespeichert = textgespeichert + String.valueOf(ch[i]);
						//System.out.print(ch);
					}
				}
				else
				{
					ch[i] = (char)zahl;
					textgespeichert = textgespeichert + String.valueOf(ch[i]);
					//System.out.print(ch);
				}
			} //while(durch == 7);
        
                        //jTextPane2.setText(textgespeichert);
    }
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JPasswordField jPasswordField2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextPane jTextPane1;
    private javax.swing.JTextPane jTextPane2;
    // End of variables declaration
    // Mein Teil
    private String text1, text2;
    private int kon = 1;
    private int zahl = 5;
    private char ch[];
    private int stellen;
    private String textgespeichert;
    
    private int durchgang = 0;
}


die gui hab ich mit netbeans gemacht.
 
bitte helft mir 🙁
brauche das (ziemlich) dringend. hab schon alles versucht.
 
Hi,

was soll denn ch[] sein ? Du mußt auch irgendwann mal ein Array anlegen, sonst kannst du das nicht benutzen.

ch = new char[1024];

Gruß
Mag1c
 
ah danke! das war das problem. hab das hier vergessen zu schreiben: ch[] = text1.toCharArray();

nochmal danke an alle!
 
ich bins nochmal. und zwar würde ich gerne wissen, wie man einen String wert in einen int wert umwandelt. danke im voraus!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben