for循环只执行一次

时间:2017-12-02 10:33:40

标签: java for-loop

我试图获得以下输出,但我只得到第一个字符,即循环只执行一次,而代码是正确的。如何解决这个问题?

input : chirag hello bye
output : chb

代码:

public class PrintFirstLetter {

    public static void main(String[] args) {

        System.out.println("input");
        Scanner sc = new Scanner(System.in);    
        String st=sc.next();

        char[] ch = st.toCharArray();

        for (int i = 0; i < ch.length; i++) {       
            if((i==0&&ch[i] !=' ')||(ch[i] !=' '&&ch[i-1]==' '))
                System.out.print(ch[i]);        
        }
    }

4 个答案:

答案 0 :(得分:3)

您输入的内容为String st=sc.next(),它接收字符串直到遇到空格。因此,只有第一个单词存储在String st中。尝试将行更改为String st=sc.nextLine(),这将有效。

答案 1 :(得分:0)

为什么不试试

st.length();

它还返回字符串的长度。

答案 2 :(得分:0)

问题不在for循环中。问题出在输入法

next()

方法只接受单个单词作为输入。对于多字输入,您需要使用

nextLine()

方法。您可以通过打印String st来确认它。希望它有所帮助:)

答案 3 :(得分:0)

如上所述,你应该使用nextLine();而不是next(); 你也可以使用trim()来删除空格。 一个简单的实现:

import java.util.Arrays;
import java.util.Scanner;
public class PrintFirstLetter {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("input :");
String input = sc .nextLine();
String[] words = input.split(" ");
for (String s: words)
{
    s=s.trim();
    System.out.println("output : " + s.charAt(0));
 } 
}
}