获取字符串中的字母。为什么我的代码不能正常工作?

我是java的新手,几乎没有时间研究它。实际上,我的问题有点尴尬和毫无意义。我正在尝试从用户输入中获取字母。我知道有更有效的方法可以做到这一点,但我只想知道这种方法有什么问题。问题是当我写一个不包含任何空格的字符串时,程序没问题,但如果我写一个带有空格的字符串,它就会停止工作。


Scanner qx = new Scanner(System.in);

String a = qx.next();

for(int b = 0; b<a.length();b++){

    char z = a.charAt(b);

    System.out.print(z + " ");

    }

例如:当我写"Hi there"(不带引号)时

,我希望输出"H i t h e r e"

But it only shows "H i "

İf I would have written "Hithere" it would show"H i t h e r e "

那么为什么有空格和没有空格的区别呢?

另外,我为我的语法感到抱歉。我努力做到最好,但我已经很久没有练习了。


慕尼黑8549860
浏览 85回答 4
4回答

慕的地10843

当我开始用 java 编写代码时,我遇到了同样的问题。就像读取混合了整数和字符串的输入一样。例如:如果你想读...5 // as an IntegerHi there // as a string你必须这样编码Scanner in = new Scanner(System.in);int number = in.nextInt();in.next();String str = in.nextLine();我把那个额外的in.next()移动到下一行缓冲区(因为它只会在读取整数后在同一行的末尾)。所以,现在回答你的问题,next()将只读取字节直到出现空格。所以如果你想阅读一整行输入,你必须使用nextLine()。nextLine()将读取整行。

侃侃尔雅

这就是.next()工作原理。它需要字符串直到第一个空格。这对你有用:String a;while(qx.hasNext){a = a + qx.next();}然后继续你的循环。

噜噜哒

next返回不超过一个空白字符(空格、制表符、回车)的任何字符串。您需要使用nextLinewhich 返回回车符(也称为回车符)之前的任何字符串。

30秒到达战场

此代码将帮助您从主字符串中提取确切的子字符串public static void main (String [] args) {Scanner input = new Scanner (System.in);System.out.println("Enter a String");String name = input.next();/*from this line it will extract the charcter from the string&nbsp;* according to tour indexes given&nbsp;*/String subString = name.substring(0, 3);System.out.println("Substring is :"+subString);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java