Java程序不打印所有ASCII值

时间:2015-09-29 05:28:33

标签: java

我编写了一个Java程序,它打印出我给出的语句的相应ASCII值作为输入。问题是,它没有打印所有值。

public class test {

    public static void main(String[] args) 
    {
        System.out.println("Enter the string to be converted");
        Scanner input = new Scanner(System.in);
        String str =input.next();
        char ch[]=str.toCharArray();
        int i =0;
        for(i =0;i<str.length();i++)
        {
            int ascii=(int)ch[i];   
            System.out.println(ascii+"\n");
        }

        input.close();
    }
}

对于ex: - &#34;最古老的古希腊语和拉丁语写作在单词之间几乎没有空格,可以用&#34;它只打印84,104,101。

它应该打印句子中的所有值。

4 个答案:

答案 0 :(得分:2)

使用

 String str =input.nextLine();

获取ASCII值的另一种方法。

String s = "The oldest classical Greek";
byte[] bytes = s.getBytes("US-ASCII");
for(int i=0;i<bytes.length;i++)
System.out.println(bytes[i]);//prints ASCIIs

答案 1 :(得分:0)

String str = input.next();

应该是:

String str = input.nextLine();

Scanner#next

  

查找并返回此扫描仪的下一个完整令牌。一个   完整标记之前和之后是匹配的输入   分隔符模式。

Scanner#nextLine

  

使此扫描程序超过当前行并返回该输入   被跳过了。此方法返回当前行的其余部分,   排除末尾的任何行分隔符。该职位设定为   下一行的开头。

答案 2 :(得分:0)

您应该使用scanner.nextLine()代替scanner.next()(查找并返回此扫描程序中的下一个完整令牌)。

将其更改为

String str = input.nextLine();

而不是

String str = input.next();

答案 3 :(得分:0)

input.next()会根据您的预期读取令牌而不是行。

您需要使用

String str = input.nextLine();

而不是

String str = input.next();

<强> IDEONE DEMO