如何以相反的顺序打印中间名?

时间:2017-10-13 21:36:27

标签: java string

我遇到的问题是,当我输入例如Gina Charlene Doe时,它会打印出enelr。

import java.util.Scanner;
import java.io.*;

public class test_1
{
static Scanner in = new Scanner(System.in);     

public static void main() {
    String name, middle;
    System.out.println("Enter your first, middle, and last name ");
    name=in.nextLine();
    int space1=name.indexOf(" ");
    int space2=name.lastIndexOf(" ");

    middle=name.substring(space1+1,space2);

    for (int x=middle.length();x>=space1;x--)
    {
        System.out.print(middle.substring(x-1,x));
    }
}
}

抱歉,我很想将内容发布到这里,所以我希望它的格式足够好。

4 个答案:

答案 0 :(得分:0)

你的for循环只是逻辑上的缺陷。这是正确的代码

import java.util.Scanner;

public class Middle
{


public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    String name, middle, reversed = "";
    System.out.println("Enter your first, middle, and last name ");
    name=in.nextLine();
    int space1=name.indexOf(" ");
    int space2=name.lastIndexOf(" ");

    middle=name.substring(space1+1,space2);

    for(int i=middle.length(); i > 0; i--)
    {
        reversed = reversed  + middle.charAt(i-1);
    }
    System.out.println(reversed);
}
}

答案 1 :(得分:0)

根据您的输出,您的循环正在运行但过早终止。所以你的for循环出了问题

 for (int x=middle.length();x>=space1;x--)

您的情况,x> = space1,是错误的来源,因为您在此处将其设置为5:

 int space1=name.indexOf(" ");

所以在你的循环中,它从8开始按字符串排序,当x = 4时终止,这是在你的字符串的中间,显然不是你想要的。所以正确的解决方法是

for (int x=middle.length();x>0;x--)

答案 2 :(得分:0)

试试这种方式!

import java.util.Scanner;

public class Middle{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter your first, middle and last name.");
        String[] name = in.nextLine().split(" ");

        for(int i=name[1].length()-1; i>=0; i--){
            System.out.print(name[1].charAt(i));
        }
    }

}

答案 3 :(得分:0)

  

如何以相反的顺序打印中间名?

直接答案是 new StringBuilder(middle).reverse().toString();

解决方案:

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);

    // input
    System.out.println("Enter your first, middle, and last name ");
    String fullname = in.nextLine();

    // split
    String[] fullnameArray = fullname.trim().split("\\s");

    // parse
    String first = fullnameArray[0];
    String middle = fullnameArray[1];
    String last = fullnameArray[2];

    // reverse middle name       
    String middleReversed = new StringBuilder(middle).reverse().toString();

    // output
    System.out.println("First name:" + first);
    System.out.println("middle name (reversed):" + middleReversed);
    System.out.println("last name:" + last);

}