所以它是学校的一项工作,我们需要输入最多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);
}
请帮助我们或者至少就如何解决这个问题给我们一些建议。
答案 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};