需要在java中创建名称生成器的建议

时间:2013-03-15 04:37:24

标签: java

嗨,我正在尝试制作一个星球大战名称发电机而且我被卡住了。我想让该计划遵循以下准则:

我应该创建一个名为promptstring的方法。

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

示例:

  • 输入您的名字:Thom
  • 输入您的姓氏:Yorke
  • 输入您母亲的婚前姓名:Selway
  • 进入您出生的城市:Wellingborough
  • 进入你驾驶的第一辆车:奥迪
  • 你是KEAUDI的THOYO SEWEL

现在我只是编译错误

  找到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!");
     }
 }

4 个答案:

答案 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!");
    }
}