Java for循环只执行一次

Java for循环只执行一次,java,for-loop,Java,For Loop,我试图获得以下输出,但只得到第一个字符,即代码正确时循环只执行一次。如何解决这个问题 input : chirag hello bye output : chb 代码: 公共类PrintFirstLetter{ 公共静态void main(字符串[]args){ 系统输出打印项次(“输入”); 扫描仪sc=新的扫描仪(System.in); 字符串st=sc.next(); char[]ch=st.toCharArray(); 对于(int i=0;i

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

input : chirag hello bye
output : chb
代码:

公共类PrintFirstLetter{
公共静态void main(字符串[]args){
系统输出打印项次(“输入”);
扫描仪sc=新的扫描仪(System.in);
字符串st=sc.next();
char[]ch=st.toCharArray();
对于(int i=0;i
您的输入被视为
字符串st=sc.next()
,它将接收字符串直到遇到空格。因此,只有第一个单词存储在字符串st中。请尝试将该行更改为
字符串st=sc.nextLine()
,这样可以工作。

您为什么不试试呢

st.length()


它还返回字符串的长度。

问题不在for循环中。问题在于

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

nextLine()

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

如上所述,您应该使用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));
 } 
}
}

阅读Scanner.next()和Scanner类的文档。我建议在您正在使用的编辑器/IDE中启动一个调试器,并逐步检查代码,看看会发生什么。我不相信
sc。next()
将返回预期的短语。第一个调试步骤:打印st的值。。。
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));
 } 
}
}