我的Scannerclass不扫描字符串 - 但为什么?

时间:2017-06-06 07:14:05

标签: java string unicode

我们在大学接受了关于unicode和ASCII和字符等的练习。练习的一部分是找到一种方法来读取控制台中的用户输入,该输入必须是char并且返回ASCII和Unicode。

我觉得很容易,但我的扫描仪不会扫描。因为扫描仪没有.nextChar方法。我习惯使用String方法(scanner.nextLine)。在下一步中,我将singlechar-String转换为带有char ... = s.charAt的字符,并从那里我想获得十六进制和ASCII。无论我做什么,我的扫描仪都不会扫描字符串。这是代码:

do{

    System.out.println("Geben Sie ein Zeichen ein um den dazugehoerigen ASCII- und Unicode anzuzeigen");
    input = scan.nextLine();

} while(input.length() >= 2 & input.length() < 1);

zeichen = input.charAt(0);

i = (int) zeichen;

System.out.println("Sie haben " + zeichen + " gewählt.\nDer dazugehoerige ASCII-Code ist " + i + "\nDer dazugehoerige Unicode ist " + (buffer.toString()+ Integer.toHexString(i)));

4 个答案:

答案 0 :(得分:0)

你的情况错了:

(input.length() >= 2) & (input.length() < 1)

和布尔条件可以作为&amp;&amp;而不是&amp;

另一方面,没有任何字符串,其长度可以 大于2且小于1 同时!这样的条件永远不会满足!

答案 1 :(得分:0)

条件错误,因为它永远不会是true。 也许你应该用这个:

input.length() >= 2 || input.length() < 1

此外,您的扫描仪是否从键盘读取? 它应该是这样的:

Scanner scan = new Scanner(System.in);

尝试了这段代码,效果很好:

String input = null;
Scanner scan = new Scanner(System.in);
do{

    System.out.println("Geben Sie ein Zeichen ein um den dazugehoerigen ASCII- und Unicode anzuzeigen");
    input = scan.nextLine();

}while(input.length() >= 2 || input.length() < 1);

    char zeichen = input.charAt(0);

    int i = (int) zeichen;
    System.out.println("Sie haben " + zeichen + " gewählt.\nDer dazugehoerige ASCII-Code ist " + i + "\nDer dazugehoerige Unicode ist " + (buffer.toString()+ Integer.toHexString(i)));

答案 2 :(得分:0)

input.length()不能&gt; = 2且&lt; 1同时。检查你的状况。

答案 3 :(得分:0)

我同意以前的所有评论。 你必须添加更多的代码,所以我们可以检查你的扫描仪(它是用System.in初始化的吗?)和其他东西。

你只需要考虑单字母输入吗? 否则,一个for循环,其中字符串中的每个字符都更改为ASCII和UNICODE对我更有意义;如果你只有单字符输入我会推荐一个错误陈述或一个例外,以便用户知道他的输入错误!

最后,如果你用德语命名你的变量(这不是坏事),那就用它们全部来做,否则会让人感到困惑!我自己犯了这个错误,有时会松动我的变量!

以下是我谈到的for循环的一个例子:

    String input = "";
    Scanner scan = new Scanner(System.in);
    char zeichen = ' ';

    System.out.println("Geben Sie ein Zeichen ein");
    input = scan.nextLine();

    for(int a=0; a<input.length();a++)
    {
        zeichen = input.charAt(a);
        int i = (int) zeichen;
        System.out.println("Sie haben " + zeichen + " Ascii: " + i + " Unicode: "); //this line has been slightly simplified
    }