Java 提示用户在一行中输入名称并将其打印为;“最后,第一”;

Java 提示用户在一行中输入名称并将其打印为;“最后,第一”;,java,java.util.scanner,user-input,Java,Java.util.scanner,User Input,我们整个实验室都没人能解决这个问题,所以我们不得不做作业。我们将提示用户在一行中输入他们的名字和姓氏。main方法应该处理所有println语句,并将名称打印为Last、First line 26 states "cannot find symbol." line 36 states "not a statement. ';' expected. line 39 states unreachable statement. 我已经用这个代码玩了一个小时,几乎放弃了。有什么帮助吗 /* * To

我们整个实验室都没人能解决这个问题,所以我们不得不做作业。我们将提示用户在一行中输入他们的名字和姓氏。main方法应该处理所有println语句,并将名称打印为Last、First

line 26 states "cannot find symbol."
line 36 states "not a statement. ';' expected.
line 39 states unreachable statement.
我已经用这个代码玩了一个小时,几乎放弃了。有什么帮助吗

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lab11;

import java.util.Scanner;

/**
 *
 * @author xxxxxx
 */
public class Lab11 {
    public static void main(String[] args) {
        System.out.println("Enter your name: ");
        Scanner user_input=new Scanner(System.in);

        changeNameFormat();
        System.out.println(lastName+", " + firstName);

        System.out.println("Enter a word. ");
        palindrome();
    }

    public static String changeNameFormat() {
        String firstName, lastName;
        firstName, lastName = user_input.nextLine;
        return lastName;
        return firstName;
    }
“找不到符号”将是
palindrome()
,这是一个方法调用,但您尚未在任何地方定义它(而且它似乎与问题无关)。你也会在网上看到这个

System.out.println(lastName+", " + firstName);
因为此时您还没有声明
lastName
firstName

“nota statement”是行
firstName,lastName=…
,这在Java中是无效的语法(尽管在某些语言中,您可以同时为两个变量赋值)。您需要找到一种方法将输入分成两部分,并将一部分分配给
firstName
,另一部分分配给
lastName
;但就目前而言,这句话对Java来说并没有什么意义

“无法访问的代码”是
返回firstName
。前面的
return
行结束了方法的执行,因此您的代码永远不会到达
returnfirstname
语句。你应该打印东西,而不是退回



在这种情况下,所有报告的错误都是真实的。但是一般来说,如果代码的第一部分有很多错误,那么编译器将无法可靠地识别以后的错误,因为它无法解析整个文件。因此,有时,您会发现在前几行中修复了语法错误,这似乎会在以后产生问题。这并不是真的产生了新问题,只是编译器以前无法找到它。

以下是您需要执行的步骤列表:

获取输入[例如:“John Smith”]

将其分成两部分[有几种方法可以做到这一点]

firstName = input.substring(0, input.indexOf(" "));
lastName = input.substring(input.indexOf(" ")+1, input.length());
返回字符串的一部分

在字符串中查找特定字符

它接受一个起始值和一个结束值

在这种情况下,我们从开始开始,当我们找到一个空间时结束

为了得到姓氏,我们从找到空格的地方开始,然后在字符串的末尾结束

您还可以将其与删除字符串开头/结尾空白的方法结合使用

最后,我们返回连接的值:

return lastName + ", " + firstName;
完整代码:

package lab11;
import java.util.Scanner;
public class Lab11 {
    public static Scanner user_input;
    public static void main(String[] args) {
        user_input = new Scanner(System.in);
        System.out.print("Enter your name: ");
        System.out.println(changeNameFormat(user_input.nextLine()));
    }
    public static String changeNameFormat(String input) { //Pass a name
        String firstName, lastName;
        firstName = input.substring(0, input.indexOf(" "));
        lastName = input.substring(input.indexOf(" ")+1, input.length());
        return lastName + ", " + firstName;
    }
}
测试日期:

最后一件事。这是一个很好的约定,使您的方法按名称工作

因为您的名为“changeNameFormat()”,所以我们可能应该将要更改的名称传递给它


然后在我们的main中,我们可以获取输入,甚至可以将其作为参数传递。

Java不支持这种语法。相反,您需要使用类似的东西,您可以将其与格式化输出结合起来,如

Scanner input = new Scanner(System.in);
System.out.println("Enter your name: ");
if (input.hasNextLine()) {
    String line = input.nextLine();
    String[] names = line.split("\\s+"); // <-- globs consecutive white-space
    if (names.length > 1) {
        String firstName = names[0];                // <-- indexes start at 0
        String lastName = names[names.length - 1];  // <-- so subtract 1!
        System.out.printf("%s, %s%n", lastName, firstName);
    } else {
        System.out.println("Unknown: " + line);
    }
}
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入您的姓名:”);
if(input.hasNextLine()){
String line=input.nextLine();
String[]name=line.split(\\s+”);//1){

String firstName=names[0];//我为您的问题提供了以下解决方案,名字和姓氏必须用空格分隔

import java.util.Scanner;

public class LastFirst {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please Enter your name");
        String name = scanner.nextLine();
        name = name.substring(name.indexOf(" ")+1, name.length())+" "+name.substring(0, name.indexOf(" "));
        System.out.println(name);
    }
}

请编辑您的帖子,以正确格式化代码的最后几行:)您没有关闭类括号..一个函数可以有多少个返回?????我无法编辑,它只会显示一个白色框。在阅读以下内容后,我感觉到“哦..等等什么:”我们整个实验室都没有人能够解决这个问题。任何带有语法突出显示和动态检查的IDE都会大声尖叫。我在复制代码之前忘记删除回文行。它仍然显示相同的错误。我想我可以将这些名称返回到主方法,并让主方法打印出来。我们不允许在任何地方使用print语句除了主符号外,@Sarah我已经用另一个潜在的“找不到符号”更新了答案。我把它放到changeNameFormat方法中,它是红色的。它会提示我在每一行上创建字段和类。谢谢!!!现在,我可以从中学习,并以此作为指导我自己完成第二个问题。我添加了一些额外的注释。这是一个很好的惯例来改变方法,正如我在底部所描述的:)希望这个帮助附言