java - 获取字符串中的字母。为什么我的代码不能很好地工作?

标签 java string char java.util.scanner

我是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"
但它只显示"H i "
如果我写"Hithere" 它会显示"H i t h e r e "
那么为什么有空格和没有空格会有区别呢?
另外,我对我的语法感到抱歉。我已经尽力了,但我已经很长时间没有练习了。

最佳答案

当我开始用java编码时,我也遇到了同样的问题。就像读取混合有整数和字符串的输入一样。

例如:

如果你想阅读...

5 // as an Integer
Hi 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() 将读取整行。

关于java - 获取字符串中的字母。为什么我的代码不能很好地工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320267/

相关文章:

php - 如何替换双引号和单引号外的单词

char总是使用flex改变

java - 定义 isJavaIdentifierStart 方法

c - sscanf 获取剩余字符串的值

java - 在给定时间后跳到带有线程的 for 循环中的下一个索引

java - 从 clojure.lang.LazySeq 转换为类型 org.apache.spark.api.java.JavaRDD

java - 如何扩展 AbstractScheduledService.Scheduler

python - Python中字符串中子字符串的重叠计数

swing - 使用 openjdk 通过 XMing 转发 X11 session 时,swing 应用程序中的文本字段和区域变得不可编辑

Java:字符串索引超出范围:-1