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

时间:2019-05-27 05:45:47

标签: 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 "
那么为什么有空格和没有空格之间有区别呢?
另外,我对我的语法感到抱歉。我已经尽力了,但是好久没有练习了。

4 个答案:

答案 0 :(得分:1)

开始用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();

我将多余的 放在.next() 中,以将缓冲区移至下一行(因为它只能在读取整数)。

因此,现在要问您的问题, next() 只会读取字节,直到出现空白为止。因此,如果要阅读一行完整的输入,则必须使用 nextLine() nextLine() 将读取整行。

答案 1 :(得分:0)

next返回不超过空格字符(空格,制表符,输入)的任何字符串。

您需要使用nextLine来返回任何字符串,直到回车为止(也就是回车)。

答案 2 :(得分:0)

.next()就是这样工作的。它需要字符串直到第一个空格。 这将为您工作:

String a;
while(qx.hasNext){
a = a + qx.next();
}

然后继续循环。

答案 3 :(得分:-1)

此代码将帮助您从主字符串中提取确切的子字符串

public static void main(字符串[] 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
 * according to tour indexes given
 */
String subString = name.substring(0, 3);
System.out.println("Substring is :"+subString);

}