Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的循环可以';在我的字符串中找不到空格_Java_String_Loops_For Loop_Charat - Fatal编程技术网

Java 我的循环可以';在我的字符串中找不到空格

Java 我的循环可以';在我的字符串中找不到空格,java,string,loops,for-loop,charat,Java,String,Loops,For Loop,Charat,我一直在尝试制作一个程序,其中要求用户输入一个只有一个空格的句子,一旦他们这样做,我的循环应该穿过字符串并找到一个空格,然后取用户的名字和姓氏。唯一的问题是,我的循环没有看到空白,它从不进入IF。我整个下午都在尝试,尽管它看起来很简单,但现在它真的在折磨我 这是我的密码: Scanner sc = new Scanner(System.in); String firstName=""; String lastName=""; String fullName=""

我一直在尝试制作一个程序,其中要求用户输入一个只有一个空格的句子,一旦他们这样做,我的循环应该穿过字符串并找到一个空格,然后取用户的名字和姓氏。唯一的问题是,我的循环没有看到空白,它从不进入IF。我整个下午都在尝试,尽管它看起来很简单,但现在它真的在折磨我

这是我的密码:

    Scanner sc = new Scanner(System.in);

    String firstName="";
    String lastName="";
    String fullName="";
    int cpt=0;
    int cptBlank=0;

    System.out.println("Entrez votre nom et prénom :");
    fullName = sc.nextLine();

    cpt = fullName.length();
    indicateur = cpt+1;

    for(int i=0; i<cpt;i++) {   
        if(fullName.indexOf(i) == ' ') {    
            cptBlank = i;   
            System.out.println(i);
        }
        System.out.println("test");
    }
    firstName = fullName.substring(0, cptBlank);
    lastName = fullName.substring(cptBlank+1, fullName.length() - firstName.length() );*

如果您不介意我重新编写了您的代码,我不知道您是否会喜欢它,但它是这样的:

public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    String firstName="";
    String lastName="";
    String fullName="";
    String names[] = new String[2];

    System.out.println("Entrez votre nom et prénom :");
    fullName = sc.nextLine();
    names = fullName.split(" ");
    firstName = names[0];
    lastName = names[1];
    System.out.println("Full name: "+fullName+" First name :"+firstName+" Last Name :"+lastName);

}

我已经在空白空间上分割输入字符串并收集了姓氏和姓氏。你不需要任何循环就可以做到这一点。

如果我理解正确,你正在尝试将全名作为输入,并将其分成两个变量,因此请尝试我使用名为String Tokenizer的类为你编写的示例代码,该类的主要目的是获取字符串和分隔符,并在剪切该字符串后输出标记

String Fullname , Firstname , Lastname;

   Scanner input = new Scanner(System.in);
   System.out.println("Enter Full Name");
   Fullname = input.nextLine();

        StringTokenizer st = new StringTokenizer(Fullname, " ");
        Firstname = st.nextToken();
        Lastname = st.nextToken();
        System.out.println("First Name: "+Firstname);
        System.out.println("Last Name: "+Lastname);

indexOf()
不需要循环内部。这是家庭作业吗?是否允许使用字符串方法,如
indexOf()
?如果要求您自己编写循环,我认为不允许
indexOf()
。您显示的代码和输出完全不匹配。例如,在哪里印刷的
lachaîne contient:9caractères
?请:编程就是关心所有细节。我们无法帮助您,除非您提供清晰、正确的信息!字符串比较应该使用
.equals()
而不是
=
@SamLittlefair是比较字符串或字符的OP吗?如果要编写循环,则可以使用charAt(…)测试每个字符的空格。否则indexOf(…)将只返回第一个空格的索引,因此不需要循环。类标记器似乎真的很有效,我将阅读更多关于它的内容,谢谢你的帮助!(1-)变量名不应以大写字符开头。发布代码时遵循Java命名约定。@camickr所以你留下了函数的逻辑和所有东西,唯一让你烦恼的是命名约定!!!!!!你的代码工作得很好!如果我正确理解了,你创建了一个名为“名称”的SLing数组,将用户在空白处输出的字符串拆分“”由于方法分割,它也将结果放在数组名称之前和之后,然后将其放置到FiSTNED和LASTEND中。谢谢你的支持!根据Javadoc,在新代码中不鼓励使用StringTokenizer。请参阅以下答案:
String Fullname , Firstname , Lastname;

   Scanner input = new Scanner(System.in);
   System.out.println("Enter Full Name");
   Fullname = input.nextLine();

        StringTokenizer st = new StringTokenizer(Fullname, " ");
        Firstname = st.nextToken();
        Lastname = st.nextToken();
        System.out.println("First Name: "+Firstname);
        System.out.println("Last Name: "+Lastname);