这是一个以输入5名称和5个电话号码给出的程序,在输出中给出了按字母顺序排列的名称。 问题是,当我输入第一个名字和第一个号码时,程序跳转到第二个“电话号码输入”而不让我插入第二个名字。 我希望这是有道理的。
我也不介意任何使分类更容易的建议。
这是代码:
import java.util.Arrays;
import java.util.Scanner;
public class RubricaTelefonica {
public static void main(String[] args) {
String names[] = new String[5];
long phone_num[] = new long[5];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < 5; i++) {
System.out.println("Inserisci il nome:");
names[i] = sc.nextLine();
System.out.println("Inserisci il numero di telefono:");
phone_num[i] = sc.nextLong();
}
sc.close();
String names_unsorted[] = names;
Arrays.sort(names);
long sorted_num[] = new long[5];
for(int a = 0; a < 5; a++) {
//sorted cicle
for(int b = 0; b < 5; b++) {
//unsorted cicle
if(names[a] == names_unsorted[b]) {
sorted_num[a] = phone_num[b];
}
}
}
}
}
答案 0 :(得分:0)
你误解了nextLong();它只是读取long值,然后即将到来的nextLine()由控制台中的新行条目触发。
在nextLong()调用之后放一个sc.nextLine(),或者更好的是用nextLine()读取电话号码为String,然后从中解析一个长号。