我们整个实验室中没有人能够解决这个问题,所以我们必须做好功课。我们将提示用户在一行中输入他们的名字和姓氏。主方法应该处理所有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;
}
答案 0 :(得分:1)
以下是您需要执行的步骤列表:
获取输入[将是示例:" John Smith"]
将它分成两部分[有几种方法可以做到]
firstName = input.substring(0, input.indexOf(" "));
lastName = input.substring(input.indexOf(" ")+1, input.length());
substring()返回字符串的一部分。
indexOf()在字符串中找到特定字符。
它需要一个起始值和一个结束值。
在这种情况下,我们从头开始,到找到空格时结束。
要获取姓氏,我们从找到空格开始,到字符串末尾结束。
您还可以将此与.trim()方法结合使用,该方法可以从字符串的开头/结尾删除空格。
最后,我们返回连接值:
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;
}
}
经过测试:http://www.compileonline.com/compile_java_online.php
最后一件事。使你的方法在命名时起作用是一个很好的惯例。
由于你的名字是#34; changeNameFormat()",我们应该把它传给我们想要改变的名字。
然后在我们的主要内容中,我们可以获取输入,甚至将其作为参数传递。
答案 1 :(得分:0)
"找不到符号"将是palindrome()
,这是一种方法调用,但您无法在任何地方定义它(并且它似乎与问题无关)。您还可以在
System.out.println(lastName+", " + firstName);
因为此时您尚未宣布lastName
或firstName
。
"不是声明"是行firstName, lastName = ...
,它在Java中不是有效的语法(尽管它在某些语言中,您可以一次分配给两个变量)。您需要找到一种方法将输入分成两部分,并将一部分分配给firstName
,将一部分分配给lastName
;但就目前而言,这条线并不是有意义的Java。
"无法访问的代码"是return firstName
。之前的return
行结束了方法的执行,因此您的代码无法访问return firstName
语句。你应该打印东西,而不是归还它们。
在这种情况下,报告的所有错误都是真实的。但一般来说,如果代码的第一部分有很多错误,那么编译器就不能可靠地识别以后的错误,因为它不会设法解析整个文件。因此,有时候,您会发现在前几行中修复了语法错误,这似乎在以后会产生问题。它并没有真正创造一个新问题,只是编译器以前无法找到它。
答案 2 :(得分:0)
Java不支持该语法。相反,您需要使用类似String.split(String)
的内容,并且可以将其与格式化输出(如
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);
}
}
答案 3 :(得分: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);
}
}