2013-09-26 143 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 


    } 
}