2013-03-09 55 views
0

我在java的初學者,我在做什麼practiceit問題關閉internet.I試圖嘗試的問題,但我不明白的錯誤。生成反向話

編寫一個名爲processName的方法,該方法接受控制檯的掃描儀作爲參數,並提示用戶輸入其全名,然後以相反順序(即姓氏,名字)打印名稱。你可能會認爲只會給出第一個和最後一個名字。你應該用掃描儀讀取輸入的整條生產線一次,然後根據需要打破它分開。下面是與用戶的樣本對話:

請輸入您的全名:薩米Jankis 你按相反的順序名字是Jankis,薩米

public static void processName(Scanner console) { 
    System.out.print("Please enter your full name: "); 

    String full=console.nextLine(); 

    String first=full.substring(0," "); 
    String second=full.substring(" "); 

    System.out.print("Your name in reverse order is: "+ second + "," + first); 

} 

也許我會去解釋我的code.So我嘗試打破這兩個詞apart.So我使用的串找到這兩個詞,然後我硬編碼扭轉他們。我認爲邏輯是正確的,但我仍然得到這些錯誤。

Line 6 
You are referring to an identifer (a name of a variable, class, method, etc.) that is not recognized. Perhaps you misspelled it, mis-capitalized it, or forgot to declare it? 
cannot find symbol 
symbol : method substring(int,java.lang.String) 
location: class java.lang.String 
    String first=full.substring(0," "); 
        ^
Line 7 
You are referring to an identifer (a name of a variable, class, method, etc.) that is not recognized. Perhaps you misspelled it, mis-capitalized it, or forgot to declare it? 
cannot find symbol 
symbol : method substring(java.lang.String) 
location: class java.lang.String 
    String second=full.substring(" "); 
        ^
2 errors 
33 warnings 
+1

子不能把字符串參數作爲第二參數。 substring(int,int)是正確的。你給出的是substring(int,String,這是錯誤的。 – AmitG 2013-03-09 16:25:00

+0

你的意思是bth參數必須是相同的?如果它是int,那麼這兩個參數必須是int? – user2148463 2013-03-09 16:27:10

回答

1
public static void processName(Scanner console) { 
    System.out.print("Please enter your full name: "); 

    String[] name = console.nextLine().split("\\s"); 

    System.out.print("Your name in reverse order is: "+ name[1] + "," + name[0]); 

} 

當然,如果名下有2個字它纔會起作用。對於較長的名字,你應該寫這將扭轉數組

+0

Hi.I還沒有學會split函數。那麼還有其他方法可以去做嗎? – user2148463 2013-03-09 16:26:22

+0

我認爲不,因爲你永遠不知道名字的長度,所以你不能使用子字符串,一種方法是使用indexOf()方法來定位空間位置,然後知道它的位置子字符串的名字是正確的,但是這個方法的代碼會更長,而且split方法的使用非常簡單,下面是一個很好的例子:http://javarevisited.blogspot.com/2011/09/string-split -example-in-java-tutorial.html – 2013-03-09 16:28:52

0

按Java API,substring()接受像substring(int beginIndex)和兩個int參數,像substring(int startIndex, int endIndex)任何一個int參數,但你用字符串參數調用一個方法。所以你會得到這些錯誤。更多信息可以在這裏 String API找到。

1

看看爲substring()方法的文檔。它不會將字符串作爲其第二個參數。

String first=full.substring(0," "); 
    String second=full.substring(" "); 

你可能想要的是indexOf()方法。首先找到空格字符的索引。然後找到到那個點的子串。

int n = full.indexOf(" "); 
    String first=full.substring(o, n); //gives the first name 
+0

Yes.it是indexOf.I不斷與子串混合在一起。非常感謝你(: – user2148463 2013-03-09 16:31:21

0
public class ex3_11_padString { 
    public static void main(String[] args) { 
     System.out.print("Please enter your full name: "); 
     String f_l_Name = console.nextLine(); 
     String sss[] = f_l_Name.split(" ", 2); 
     System.out.print("Your name in reverse order is " + sss[1] + ", " + sss[0]); 
    } 
} 
+0

)考慮添加一些解釋 – Sunil 2018-02-24 03:48:51