我编写了一个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。
它应该打印句子中的所有值。
答案 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();
查找并返回此扫描仪的下一个完整令牌。一个 完整标记之前和之后是匹配的输入 分隔符模式。
使此扫描程序超过当前行并返回该输入 被跳过了。此方法返回当前行的其余部分, 排除末尾的任何行分隔符。该职位设定为 下一行的开头。
答案 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 强>