-1

嗨,我正在尝试制作一个星球大战名称生成器,但我被卡住了。我想使程序遵循以下准则:

我应该创建一个名为promptstring.

用户的 Star Wars 名称由名字和姓氏组成:对于名字,使用用户真实名字的前 3 个字符,与用户真实姓氏的前 2 个字符连接。对于姓氏,使用用户母亲娘家姓的前 2 个字符,并与用户出生城市的前 3 个字符连接。对于用户的星球大战星球,使用用户姓氏的最后 2 个字符,与用户的汽车连接。

例子:

  • 输入您的名字:汤姆
  • 输入您的姓氏:约克
  • 请输入您母亲的娘家姓:塞尔威
  • 输入您出生的城市:威灵堡
  • 输入您驾驶的第一辆车:奥迪
  • 你是 KEAUDI 的 THOYO SEWEL

现在我只是遇到编译器错误

发现 8 个错误:文件:J:\CS Projects\NameGenerator.java [行:15] 错误:无法解析输入

文件:J:\CS Projects\NameGenerator.java [line: 18] 错误:java.util.Scanner 类型中的方法 nextLine() 不适用于参数 (int, int)

文件:J:\CS Projects\NameGenerator.java [行:19] 错误:last1 无法解析为变量

文件:J:\CS Projects\NameGenerator.java [行:19] 错误:end 无法解析为变量

文件:J:\CS Projects\NameGenerator.java [行:22] 错误:java.util.Scanner 类型中的方法 nextLine() 不适用于参数 (int, int)

文件:J:\CS Projects\NameGenerator.java [行:25] 错误:java.util.Scanner 类型中的方法 nextLine() 不适用于参数 (int, int)

文件:J:\CS Projects\NameGenerator.java [行:31] 错误:Starwarsname 无法解析为变量

文件:J:\CS Projects\NameGenerator.java [行: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!");
     }
 }
4

4 回答 4

1

您错误地使用了扫描仪。它应该是这样的:

first = wars.nextLine();

如果您只想要 first 的前两个字符,则:

first = first.substring(0,2);

与您的其余字符串相同。您无法从使用扫描仪类中获取子字符串。Scanner 类仅扫描您的输入。使用 String.substring 方法(如上所示)获取子字符串。

编辑:另外,您正在尝试使用一些未声明的变量。确保先将变量“Starwarsname”声明为字符串,然后再将其分配给某个对象。

于 2013-03-15T04:46:29.070 回答
1

更改语句具有

wars.nextLine(0,1);

wars.nextLine();

以后使用

str.substring(beginIndex, endIndex)

String 的方法来获取您想要的输入字符串的任何部分,连接并打印它们。

于 2013-03-15T04:48:01.157 回答
1
Error: end cannot be resolved to a variable

表示您从未声明过该变量endString 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)。

于 2013-03-15T04:54:17.883 回答
1

使用下面的代码并测试它......我也做了测试。

关注点:

  • 你没有声明一些变量

  • 您没有在 Scanner API 中检查方法名称。请检查java doc。

请检查并告诉

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!");
    }
}
于 2013-03-15T04:55:39.853 回答