0

我刚开始使用java,所以我正在编写一些简单的程序来学习基础知识。我想知道我的 takeNames 方法使用什么返回类型?我知道它必须返回一个字符串,所以我使用 "" 以便用户看不到任何东西。

这是我的第一个程序之一,所以我认为我一定做错了什么,或者可能没有错,但我的代码肯定会更有效率。

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);


  }
}

谁能告诉我我使用的退货声明是否可以接受?或者有人可以告诉我一种更好更有效的方式来编写我的代码吗?
非常感谢!

4

6 回答 6

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!


}
于 2013-09-26T02:07:59.490 回答
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);
于 2013-09-26T02:08:49.753 回答
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);
  }
于 2013-09-26T02:10:13.267 回答
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]);
      }
  }
}
于 2013-09-26T02:12:56.370 回答
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
}
于 2013-09-26T02:12:59.540 回答
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


  }
}
于 2013-09-26T02:14:43.017 回答