# Addition von char und int als Zeichen ausgeben



## Endymion (26. Apr 2011)

Wie kann ich dafür sorgen, dass bei beispielsweise

```
String s = (char) 'A' + 2;
System.out.println(s);
```
ein C anstatt der Zahl 67 in der Konsole ausgegeben wird?


----------



## Logaff (26. Apr 2011)

wandel a in eine acsii zahl um rechne die hazl +2 und lass sie wieder als ascii sysmbol ausgeben


----------



## eRaaaa (26. Apr 2011)

anders klammern


```
(char) ('A' + 2)
```


----------



## Endymion (26. Apr 2011)

Funktioniert, danke. Komischerweise bekomme ich aber, wenn ich 0 beziehungsweise 1 zu 'A' addiere A beziehungsweise B ausgegeben. Wenn ich aber 2 beziehungsweise 3 addiere, bekomme K beziehungsweise U als ausgabe. Was mache ich da falsch?


----------



## eRaaaa (26. Apr 2011)

Endymion hat gesagt.:


> Was mache ich da falsch?


Gute Frage, zeige uns Code

```
System.out.println((char)('A'+2));
		System.out.println((char)('A'+3));
```
liefert bei dir was?


----------



## Endymion (26. Apr 2011)

Das erste liefert U und das zweite K.


----------



## Gast2 (26. Apr 2011)

Hm, das ist aber falsch 

Poste mal den Code den du ausführst


----------



## Endymion (26. Apr 2011)

Das war nur die vereinfachte Version, folgendes ist der komplette Code:

```
package strings;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import main.*;
import javax.swing.*;
/**
 * A class that encodes or decodes an entered String or .txt-File to a selected code.
 * @author Mario Trageser
 *
 */
public class StringEncoder
{
	static JFrame f;
	/**
	 * Encodes or decodes an entered String or .txt-File with an selected encoding- or decoding-method.
	 * @throws FileNotFoundException
	 */
	public StringEncoder() throws FileNotFoundException
	{
		String s = "";
		String product = "";
		String encode = "Enter the string you want to encode";
		String decode = "Enter the string you want to decode";
		String[] encodingMethods = {"Morse Code", "Caesar Code"};
		String[] encodeDecodeOptions = {"encode", "decode"};
		String[][] morseCodeAlphabet = {{".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}, {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}};
		int encodingMethod = Utils.selectTool(f, "Select the encoding- or decoding-method you want to use.", "select encoding/decoding method", encodingMethods);
		int encodeDecode = Utils.selectTool(f, "Do you want to encode or decode the string", "encode or decode", encodeDecodeOptions);
		switch(encodingMethod)
		{
		case 0:
			switch(encodeDecode)
			{
			case 0:
				s = Utils.enterFileOrString(f, encode).toUpperCase();
				for(int i = 0; i < s.length(); i++)
				{
					char c = s.charAt(i);
					if(c >= 'A' && c <= 'Z')
					{
						product += morseCodeAlphabet[0][c - 'A'] + " ";
					}
					if(c >= '0' && c <= '9')
					{
						product += morseCodeAlphabet[1][c - '0'] + " ";
					}
				}
				break;
			case 1:
				s = Utils.enterFileOrString(f, decode).toUpperCase() + " ";
				List<MatchResult> results = new ArrayList<MatchResult>();
				Matcher m = Pattern.compile(".*? ").matcher(s);
				while(m.find())
				{
					results.add(m.toMatchResult());
				}
				for(MatchResult r : results)
				{
					String codePart = r.group().trim();
					for(int i = 0; i < morseCodeAlphabet[0].length; i++)
					{
						if(codePart.equals(morseCodeAlphabet[0][i]))
						{
							product += (char) ('A' + i);
						}
					}
					for(int i = 0; i < morseCodeAlphabet[1].length; i++)
					{
						if(codePart.equals(morseCodeAlphabet[1][i]))
						{
							product += (char) ('0' + i);
						}
					}
				}
			}
			break;
		case 1:		
		}
		JOptionPane.showMessageDialog(f, product, "Morse Code", 1);
	}
}
```
Es geht um Zeile 70 und 77.


----------



## eRaaaa (26. Apr 2011)

Sicher dass du nicht +20 geschrieben hast ? :bae:


----------



## Endymion (26. Apr 2011)

nein, es ist definitiv nicht +20.


----------



## Gast2 (26. Apr 2011)

Hast du dir mal i ausgeben lassen um zu schauen was er da genau addiert?


----------



## Endymion (26. Apr 2011)

Hat sich erledigt, war einfach nur ein schusseligkeitsfehler


----------

