我遇到的问题是,当我输入例如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));
}
}
}
抱歉,我很想将内容发布到这里,所以我希望它的格式足够好。
答案 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);
}