我试图获得以下输出,但我只得到第一个字符,即循环只执行一次,而代码是正确的。如何解决这个问题?
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]);
}
}
答案 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));
}
}
}