如何在java中捕获ascii中缺少的前导零
我创建了一个程序,通过如何在java中捕获ascii中缺少的前导零,java,binary,ascii,Java,Binary,Ascii,我创建了一个程序,通过扫描仪输入接收字符串,并将其转换为二进制ASCII数字,还打印出每个字母的频率。 这是我的程序 import java.util.*; public class ASCII { public static void main (String [] args) { Scanner sc = new Scanner (System.in); System.out.println("Enter your sentence: " )
扫描仪
输入接收字符串,并将其转换为二进制ASCII数字,还打印出每个字母的频率。
这是我的程序
import java.util.*;
public class ASCII
{
public static void main (String [] args)
{
Scanner sc = new Scanner (System.in);
System.out.println("Enter your sentence: " );
String myString = sc.nextLine();
int length = myString.length();
int ascii;
char character;
int[] myarray = new int[256];
for(int i =0; i < length; i++)
{
character = myString.charAt(i);
ascii = (int)character; // casting the character into an int
System.out.print(Integer.toBinaryString(ascii) + " ");
myarray[ascii]++; // counting the frequency of each letter in the string
}
System.out.println();
for ( int k = 0; k < myarray.length; k++ )
{
if ( myarray[k] > 0 ) // if the frequency is greater than 0 do this print line, without this programm would print all 255 ascii characters.
{
System.out.println("'"+(char)k + "'" + " appeared " + myarray[k] + " times." );
}
}
}
}
但我得到了:
"1101000 1100101 1101100 1101100 1101111 100000 1110100 1101000 1100101 1110010 1100101"
正如您所看到的,“100000”只有6位长,我的一些ascii值由于缺少前导零的问题而错误
我不知道我将如何着手解决这个问题,这就是为什么我在这里。如果有人能告诉我如何解决这个问题,那就太好了。publicstaticvoidmain(String[]args)
public static void main (String [] args)
{
String myString = "hello there";
int length = myString.length();
int ascii;
char character;
int[] myarray = new int[256];
for(int i =0; i < length; i++)
{
character = myString.charAt(i);
ascii = character; // casting the character into an int
// not optimal, but works
System.out.println(String.format("%7s", Integer.toBinaryString(ascii)).replace(' ', '0'));
myarray[ascii]++; // counting the frequency of each letter in the string
}
System.out.println();
for ( int k = 0; k < myarray.length; k++ )
{
if ( myarray[k] > 0 ) // if the frequency is greater than 0 do this print line, without this programm would print all 255 ascii characters.
{
System.out.println("'"+(char)k + "'" + " appeared " + myarray[k] + " times." );
}
}
}
{
String myString=“你好”;
int length=myString.length();
int-ascii;
字符;
int[]myarray=新int[256];
for(int i=0;i0)//如果频率大于0,则执行此打印行,如果没有此程序,则将打印所有255个ascii字符。
{
System.out.println(“'”+(char)k+“'+”出现“+myarray[k]+”次”);
}
}
}
您应该停止将字符串转换为整数并直接比较字符串,或者将k转换为字符串,附加所需数量的前导零,然后将其转换为字符。使用时发生的情况:System.out.print(Integer.toString(ascii,2)+“”);是的,有128个ASCII代码点,编号为0-127,编码为值0-127。但是,基于Java使用ASCII的假设,您的程序中有一些坚持。Java、JavaScript、.NET、XML、HTML……使用charAt(i)
返回一个UTF-16编码单元,其中一个或两个编码一个Unicode码点,例如a或欧元,或者使用这种方法,它实际上每个字母打印8位,而不是7位。您能修复它,使其打印7位吗?
public static void main (String [] args)
{
String myString = "hello there";
int length = myString.length();
int ascii;
char character;
int[] myarray = new int[256];
for(int i =0; i < length; i++)
{
character = myString.charAt(i);
ascii = character; // casting the character into an int
// not optimal, but works
System.out.println(String.format("%7s", Integer.toBinaryString(ascii)).replace(' ', '0'));
myarray[ascii]++; // counting the frequency of each letter in the string
}
System.out.println();
for ( int k = 0; k < myarray.length; k++ )
{
if ( myarray[k] > 0 ) // if the frequency is greater than 0 do this print line, without this programm would print all 255 ascii characters.
{
System.out.println("'"+(char)k + "'" + " appeared " + myarray[k] + " times." );
}
}
}