![](/img/trans.png)
[英]User input first and last name , print out intisials java eclipse
[英]Prompt user to enter name on one line and print it out as “Last, First”
在我們整個實驗室中,沒有人能夠解決這個問題,因此我們必須做作業。 我們將提示用戶在一行上輸入他們的名字和姓氏。 主要方法應該處理所有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;
}
這是您需要執行的步驟列表:
獲取輸入[將是示例:“約翰·史密斯”]
分成兩部分[有幾種方法可以執行此操作]
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
最后一件事。 按照您的方法命名的習慣是一個很好的約定。
由於您的名稱為“ changeNameFormat()”,因此我們可能應該將其更改為我們想要更改的名稱。
然后在我們的主體中,我們可以獲得輸入,甚至可以將其作為參數傳遞。
“找不到符號”將是palindrome()
,這是一個方法調用,但是您尚未在任何地方定義它(而且似乎與問題無關)。 您還將在線上獲得此
System.out.println(lastName+", " + firstName);
因為那時您還沒有聲明lastName
或firstName
。
“不是語句”行firstName, lastName = ...
,這在Java中不是有效的語法(盡管在某些語言中,您可以一次將其分配給兩個變量)。 您需要找到一種將輸入分為兩部分的方法,然后將一個部分分配給firstName
並將一個部分分配給lastName
。 但就目前而言,這行對Java沒有意義。
“無法訪問的代碼”是return firstName
。 上一個return
行結束了該方法的執行,因此您的代碼將永遠不會return firstName
語句。 您應該在打印東西,而不是退還它們。
在這種情況下,報告的所有錯誤都是真實的。 但是總的來說,如果您在代碼的第一部分中有很多錯誤,那么編譯器將無法可靠地識別出以后的錯誤,因為它無法解析整個文件。 因此,有時您會發現您在前幾行中修復了語法錯誤,以后似乎會產生問題。 它並不是真正在創造一個新問題,只是編譯器以前無法找到它。
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);
}
}
對於您的問題,我有以下解決方案,名字和姓氏必須用空格分開
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.