嗨,我正在尝试制作一个星球大战名称发电机而且我被卡住了。我想让该计划遵循以下准则:
我应该创建一个名为promptstring
的方法。
用户的星球大战名称由名字和姓氏组成: 对于名字,使用用户真实名字的前3个字符,与用户真实姓氏的前2个字符连接。 对于姓氏,请使用用户母亲的婚前姓名的前2个字符,与用户出生城市的前3个字符连接。 对于用户的星球大战星球,请使用用户姓氏的最后2个字符,与用户的汽车连接。
示例:
现在我只是编译错误
找到8个错误:文件:J:\ CS Projects \ NameGenerator.java [line:15] 错误:无法解析输入文件:J:\ CS Projects \ NameGenerator.java [line:18]错误:方法 java.util.Scanner类型中的nextLine()不适用于 arguments(int,int)
文件:J:\ CS Projects \ NameGenerator.java [line:19]错误:last1 无法解析为变量
文件:J:\ CS Projects \ NameGenerator.java [line:19]错误:结束不能 被解析为变量
文件:J:\ CS Projects \ NameGenerator.java [line:22]错误:方法 java.util.Scanner类型中的nextLine()不适用于 arguments(int,int)
文件:J:\ CS Projects \ NameGenerator.java [line:25]错误:方法 java.util.Scanner类型中的nextLine()不适用于 arguments(int,int)
文件:J:\ CS Projects \ NameGenerator.java [line:31]错误: Starwarsname无法解析为变量
文件:J:\ CS Projects \ NameGenerator.java [line:34]错误: Starwarsname无法解析为变量
我一遍又一遍地重写了这个程序而且我被卡住了。任何人都可以指出我正确的方向或告诉我我做错了什么。提前谢谢。
import java.util.*;
public class NameGenerator {
static Scanner wars = new Scanner(System.in);
public static void main(String[] args) {
//Prompt for User's Name
String first,last,mother,city,car;
System.out.printf("Please state your First Name");
first= wars.Line(0,2);
System.out.printf("Please state your Last name");
last=wars.nextLine(0,1);
last1=wars.nextLine(-1,end);
System.out.printf("Please state your mothers maiden name");
mother=wars.nextLine(0,1);
System.out.printf("Please state the city you were born in ");
city=wars.nextLine(0,2);
System.out.printf("Please state your first car");
car=wars.nextLine();
Starwarsname=first+last + mother + city + "of" + last + car ;
System.out.println("In a galaxy far, far away you are known as " + Starwarsname + " MAY THE FORCE be with you!");
}
}
答案 0 :(得分:1)
您使用的扫描仪不正确。它应该是这样的:
first = wars.nextLine();
如果您只想要第一个前两个字符,那么:
first = first.substring(0,2);
与其他字符串相同。您无法使用扫描仪类获取子字符串。扫描仪类仅扫描您的输入。使用String.substring方法(如上所示)获取子字符串。
编辑:此外,您正在尝试使用一些未声明的变量。确保在将变量“Starwarsname”指定为String之前先将其声明为String。
答案 1 :(得分:1)
更改语句
wars.nextLine(0,1);
到
wars.nextLine();
稍后使用
str.substring(beginIndex, endIndex)
String的方法,以获取所需输入字符串的任何部分,连接并打印它们。
答案 2 :(得分:1)
Error: end cannot be resolved to a variable
表示您从未声明变量end
。在使用每个变量之前,请确保使用类似String end;
的行。
Error: The method nextLine() in the type java.util.Scanner is not applicable for the arguments (int, int)
表示nextLine()
无法接受任何参数(请参阅javadocs)。如果要从输入中获取子字符串,请执行wars.nextLine().substring(0,2)
之类的操作。此外,这两个数字必须为正数(代码中的-1将导致ArrayOutOfBoundsException
)。
答案 3 :(得分:1)
使用以下代码并测试它... 我也做了测试。
关注点:
您没有声明一些变量
您没有在Scanner API中检查方法名称。请检查java doc for that。
请检查并告诉
import java.util.*;
public class NameGenerator {
static Scanner wars = new Scanner(System.in);
public static void main(String[] args) {
//Prompt for User's Name
String first, last, mother, city, car,Starwarsname,last1;
int end=0;
System.out.printf("Please state your First Name");
first = wars.nextLine();//wars.Line(0, 2);
System.out.printf("Please state your Last name");
last = wars.nextLine();
// last1 = wars.nextLine();
System.out.printf("Please state your mothers maiden name");
mother = wars.nextLine();
System.out.printf("Please state the city you were born in ");
city = wars.nextLine();
System.out.printf("Please state your first car");
car = wars.nextLine();
Starwarsname = first +" "+ last +" "+ mother +" "+ city + " of " + last +" "+ car;
System.out.println("In a galaxy far, far away you are known as " + Starwarsname +
" MAY THE FORCE be with you!");
}
}