2013-09-26 199 views
0

我剛開始用java,所以我正在編寫一些簡單的程序來學習基礎知識。我想知道什麼返回類型用於我的takeNames方法?我知道它必須返回一個字符串,所以我使用「」,以便用戶不能看到任何東西。String方法的返回值

這是我的第一個程序,所以我認爲我必須做錯事,或者沒有錯,但我的代碼肯定會更有效。

import java.util.Scanner; 

public class Name{ 

    String fName; 
    String lName; 
    String line = takeNames(fName, lName); 

    public String takeNames(String fName, String lName){ 

    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter your first and last name"); 
    fName = scanner.next(); 
    lName = scanner.next(); 
    System.out.printf("Hello %s %s", fName, lName); 
    return ""; 
    } 


    public static void main(String [] args){ 
    Name l = new Name(); 
    System.out.println(l.line); 


    } 
} 

任何人都可以告訴我,如果我用於return語句是可以接受的嗎?或者有人能告訴我一個更好的方法來寫我的代碼?
非常感謝!

+0

你爲什麼要返回一個字符串? –

+5

答案是,你想要什麼方法返回? – MadProgrammer

+0

我沒有看到其他人指出這一點,但值得一提的是''return「」;'是一般的有效陳述,它不是你應該在這裏使用的。 –

回答

1

你不需要任何回報。

public void takeNames(String fName, String lName){ 

這樣稱呼它(這個替換您的main法):

Name l = new Name(); 
l.takeNames(); 

,並刪除該行:

String line = takeNames(fName, lName); 

是那麼沒用。

如果你想使用System.out.println(l.line),然後嘗試:

Scanner scanner = new Scanner(System.in); 
System.out.println("Enter your first and last name"); 
fName = scanner.next(); 
lName = scanner.next(); 
return "Hello " + fName + " " + lName; 
// can also be String.format("Hello %s %s", fName, lName); 
1

使返回類型void,如果你不想返回任何東西,像這樣 -

public void takeNames(String fName, String lName){ 

Scanner scanner = new Scanner(System.in); 
System.out.println("Enter your first and last name"); 
fName = scanner.next(); 
lName = scanner.next(); 
System.out.printf("Hello %s %s", fName, lName);//note no return statement needed! 


} 
1

您稍後打印出此法System.out.println(l.line)的返回值,所以也許你想回到你在這個方法中打印出字符串,而不是打印出來。

public String takeNames(String fName, String lName){ 

    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter your first and last name"); 
    fName = scanner.next(); 
    lName = scanner.next(); 
    return String.format("Hello %s %s", fName, lName); 
    } 
1
package com.linkage.test; 
import java.util.Scanner; 

public class Name{ 


    public static String takeNames(){ 

    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter your first and last name"); 
    String fName; 
    String lName; 
    fName = scanner.next(); 
    lName = scanner.next(); 

    System.out.printf("Hello %s %s", fName, lName); 
    return fName+"_"+lName; 
    } 


    public static void main(String [] args){ 
     String[] arrays = takeNames().split("_"); 
     System.out.println(); 
     for (int i = 0; i < arrays.length; i++) { 
      System.out.println(arrays[i]); 
     } 
    } 
} 
1

一個return聲明的目的是返回的東西,將是有用的後面。除非打印出空白行,如System.out.println(l.line);會做,對你有用,沒有意義做這個特定的return聲明。

更大的問題是您的代碼結構。它改成這樣:

String fName; 
String lName; 
//Get rid of line 

public void takeNames(){ //You don't need fName or lName in this line, since they're part of the object's fields 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter your first and last name"); 
    fName = scanner.next(); 
    lName = scanner.next(); 
    System.out.printf("Hello %s %s", fName, lName); 
} 


public static void main(String [] args){ 
    Name l = new Name(); 
    //What should you call here to get the same effect as before? Will let you figure that out 
} 
1

更好的方式做這將是

import java.util.Scanner; 

public class Name{ 

    String fName; 
    String lName; 
    String fullName; 

    public String takeNames(){ // don't need parameters else it will shadow above variables 

    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter your first and last name"); 
    fName = scanner.next(); 
    lName = scanner.next(); 

    return fName + lName; // return full name 
    } 


    public static void main(String [] args){ 
    Name l = new Name(); 
    fullName= l.takeNames(); // assign fullName returned from takeNames() 
    System.out.println(fullName); // print 


    } 
}