public static void main(String[] args) {
System.out.println("Hello and welcome! Please enter the following: ");
String q = null, s = "nul";
userName(q);
userGender(s);
print(userName(q));
print(userGender(s)); // how to achieve something like this?
}
public static void userName(String x) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter name: ");
String n = sc.nextLine();
}
public static void userGender(String y) {
Scanner sd = new Scanner(System.in);
System.out.print("Enter Gender: ");
String v = sd.next().toString();
}
public static void print(String a) {
System.out.println(a);
}
因此,我试图做到这一点,以便在执行完一个方法后将其用于打印另一个方法,但我无法获得所需的结果,并且出现了错误。
答案 0 :(得分:1)
print方法可以正常工作,它需要一个String并且不返回任何内容
public static void print(String a)
{
System.out.println(a);
}
但是,您的方法userGender和userName不返回任何内容,因此,当您使用不返回字符串的方法提供打印内容时,它将产生编译时错误。您想做类似的事情:
public static String userGender(String y){
Scanner sd = new Scanner(System.in);
System.out.print("Enter Gender: ");
return sd.next().toString();
}
由于您的逻辑尚不清楚,因此我尚未进行测试,但这可能就是您的IDE抱怨的原因。
答案 1 :(得分:0)
您的方法需要返回一些内容。您正在这样声明您的方法:public static void userGender(String y)
void
意味着您的方法将不返回任何内容。但是,由于您希望该方法返回一个String
,因此需要在方法签名中加以说明。
您的代码可能如下所示:
public static void main(String[] args) {
System.out.println("Hello and welcome! Please enter the following: ");
print(userName());
print(userGender());
}
public static String userName() {
try(Scanner sc = new Scanner(System.in)){ // this is try resource see which will close your resource once you are done in the try block see https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
System.out.print("Enter name: ");
return sc.next();
}
}
public static String userGender() {
try(Scanner sc = new Scanner(System.in)) {
System.out.print("Enter Gender: ");
return sc.next();
}
}
public static void print(String a) {
System.out.println(a);
}
您不需要使用toString()
,因为下一个已返回String。您也可以在不同的方法中使用相同的变量名称。而且非常重要,您需要再次关闭扫描仪,否则它将消耗无穷的资源。
答案 2 :(得分:0)
就像@reebow和@Kerry Gougeon都指出,您的方法正在寻找返回值,以便将其设为public static String userName()
或public static String userName(String s)
。
如果要使用Scanner
,则必须全局声明Scanner
,否则它将抛出NoSuchElementExcpetion
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Hello and welcome! Please enter the following: ");
print(userName());
print(userGender());
}
public static String userName() {
System.out.print("Enter name: ");
return sc.next();
}
public static String userGender() {
System.out.print("Enter Gender: ");
return sc.next();
}
public static void print(String a) {
System.out.println(a);
}
如果您不使用Scanner
,则只需返回传递给该方法的String
。
public static void main(String[] args) {
System.out.println("Hello and welcome! Please enter the following: ");
String a = null, b ="nul";
print(userName(a));
print(userGender(b));
}
public static String userName(String a) {
System.out.print("Enter name: ");
return a;
}
public static String userGender(String b) {
System.out.print("Enter Gender: ");
return b;
}
public static void print(String a) {
System.out.println(a);
}