取10个全名(有多个名字)加上许多限制

时间:2016-03-27 02:07:57

标签: java arrays string input character

所以它是学校的一项工作,我们需要输入最多10个全名,每个全名必须包含至少3个名字(每个至少4个字符),每个全名最多120个字符,终止时它达到了极限或者当你写“结束”并且已经有5个有效名字。在此之后,我们需要获得全名,姓氏和随机中间名的名字(其中一个名称有很多)。我们是java noobs,需要帮助。

从String我们只能使用方法:charAt(int),length(),indexOf(...),trim()和subString(...)

这是我们现在的代码,但似乎我们无处可去,最新的问题是数组以某种方式被扰乱。

static List<String[]> listarrays = new ArrayList<String[]>();
private static Scanner keyboard;
public static void main(String[] args) {
    System.out.println("10 nomes");

    for(int i= 0 ; i<10; i++){

        keyboard = new Scanner(System.in);
        String input = keyboard.nextLine();
        inputtoarray(input);
        if (input.equalsIgnoreCase("fim") ){
            break;
        }

    }
    String [][] arrayofnames = listtoarray(listarrays);
    System.out.print(Arrays.toString(arrayofnames[1]));
}

public static void SetToArrayString(Set<String> set){
    String[] array = new String[set.size()];
    int index = 0;

    for( String i : set ) {
      array[index++] = i; 
    }
    listarrays.add(array);
}
public static String[][] listtoarray(List<String[]> list){
    String[][] array = new String[list.size()][];
    int index = 0 ;
    for(String[] i : list){
        array[index++] = i;
    }
    String[][] arrayofnames = array; 
    return arrayofnames;
}
public static void inputtoarray(String input){
    int length = 0;
    Set<String> names = new HashSet<String>();
    for (int i = 0 ; i < input.length(); i++){
        char a_char = input.charAt(i);

        if (a_char == ' '){

            String word1 = input.substring(length,i+1);
            length += word1.length();

            names.add(word1);
        }
        if (i == input.length() - 1){
            String word1 = input.substring(length, i+1);

            names.add(word1);
        }
    }
    P04BaralhadorDeNomes.SetToArrayString(names);
}

请帮助我们或者至少就如何解决这个问题给我们一些建议。

1 个答案:

答案 0 :(得分:1)

所以在你的项目中你能保证获得10个有效名字吗?如果是这样而不是重新制作你的数组(它在你的方法'inputtoarray'中被扰乱)你应该用以下方法实例化它:

//[y-index][x-index]
String[][] nommes = new String[10][3];

这样您就可以简单地将y-index分配给包含名称的另一个字符串数组。为此你会有这样的事情:

String input = keyboard.nextLine();
String fist = input.subString(0, input.indexOf(" "));
input = input.subString(input.indexOf(" ") + 1)
// Follow the pattern for the middle and last names

这是做输入并将文本提取到空格(名称的结尾)。然后输入行被包围,因此设置为第一个名称的文本被截断。

如果输入为“First Middle Last”,则首先等于“First”。输入将被设置为“中间最后”。重复为名字做的事情会给你“中间”。那么你剩下的就是姓氏。使用您的三个名称值,您可以像这样创建一个String数组:

String[] nameParts = new String[]{first, middle, last};