Printing next ASCII character in the sequence - java

I want to know that how to recognize and print next character in ASCII sequence if input is a non- string value like "space" or "!".
I know that for string value we can convert it into ASCII value by using
char character = 'a';
int ascii = (int) character;
Then adding 1 to it and converting it back to char , we can get next value in the sequence .

You can use:
char character = 'a';
int ascii = (char)((int)character+1);
It should work. But I have haven`t tested it.

Related

Convert special characters into decimal equivalents in java

Is there a java library to convert special characters into decimal equivalent?
example:
input: "©™®"
output: "& #169; & #8482; & #174;"(space after & is only for question purpose, if typed without a space decimal equivalent is converted to special character)
Thank you !
This can be simply achieved with String.format(). The representations are simply the character value as decimal, padded to 4 characters and wrapped in &#;
The only tricky part is deciding which characters are "special". Here I've assumed not digit, not whitespace and not alpha...
StringBuilder output = new StringBuilder();
String input = "Foo bar ©™® baz";
for (char each : input.toCharArray()) {
if (Character.isAlphabetic(each) || Character.isDigit(each) || Character.isWhitespace(each)) {
output.append(each);
} else {
output.append(String.format("&#%04d;", (int) each));
}
}
System.out.println(output.toString());
You just need to fetch the integer value of the character as mentioned in How do I get the decimal value of a unicode character in Java?.
As per Oracle Java doc
char: The char data type is a single 16-bit Unicode character. It has
a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or
65,535 inclusive).
Assuming your characters fall within the character range, you can just get the decimal equivalent of each character from your string.
String text = "©™®";
char[] cArr = text.toCharArray();
for (char c : cArr)
{
int value = c; // get the decimal equivalent of the character
String result = "& #" + value; // append to some format string
System.out.println(result);
}
Output:
& #169
& #8482
& #174

How to convert string representation of an ASCII value to character

I have a String containing ASCII representation of a character i.e.
String test = "0x07";
Is there a way I can somehow parse it to its character value.
I want something like
char c = 0x07;
But what the character exactly is, will be known only by reading the value in the string.
You have to add one step:
String test = "0x07";
int decimal = Integer.decode(test);
char c = (char) decimal;

Java ASCII encoding

I have a quick question relating to ASCII and encoding. I am looking to take the input from a user - for example: "cat" - and turn it into a code. The code is as follows:
All lower case letters are converted to capital letters.
The first letter in the encoded message is stored as it's ASCII code value.
All subsequent letters are represented as the offset between the current letter and the previous letter.
For example: "cat" = 67 -2 19 since "C" = 67, "A" is -2 letters away from "C", and "T" is 19 letters away from "A". Any help would be greatly appreciated!
Scanner input = new Scanner(System.in);
String s = input.next().toUpperCase();
int ascii = s.charAt(0);
System.out.println(ascii);
for (int i = 1; i < s.length(); i++) {
ascii = s.charAt(i - 1);
System.out.println(s.charAt(i) - ascii);
}
To convert to capital letters there is the toUpperCase() method which returns the string with all capital letters.
To get the ASCII code of a letter you can simply create an integer and assign it the desired character (in this case the first letter of the string, so int ascii = s.charAt(0);).
To get the offsets you can use a for-loop starting from 1 (the second letter) where you get the ASCII code of the previous character and subtract it from the current one.

Autoboxed when assigned integer or character for the Character Wrapper

why we can assign both int value and a char value to Character Wrapper type. Autoboxing means boxing for the corresponding wrapper but Character is not the corresponding wrapper of int. It is Integer
why both of these statements are possible
Character character = 'a';
Character character2 = 3;
It is treated as an ASCII value, if you assign int value to Character.
Below 4 approach result in same output.
Character character2 = 'e';
Character character2 = 101;
int i = 101;
Character character2 = (char)i; // casting int to char i.e. treat it as ASCII value
Character character2 = (char)101;
System.out.println(character2); // Prints e
Note: You can refer this ASCII Table
3 is not necessarily an int. it is short type. Both char and short are 16 bit in length
It is the ASCII value assigned to the character.
In the first case
Character character1 = 'a';
The character1 is directly assigned a character value.
But in your second statement:
Character character2 = 3;
character2 is assigned the ASCII value of 3 which is ?

getting ASCII value for a character represented in String format in java

I have an use case wherein I want to get the ASCII value for characters represented in String format. For example: I have string variable charString="'\0'". So I wanted the ASCII value for the character '\0' i.e 0
String charString = "'\0'";
Kindly let me know how this can be acheived in Java
Do you mean like this?
String charString = "'\0'";
int i = charString.charAt(0); // == 0
This works for all characters < 65536, not just ASCII ones.

Categories