首页 > 解决方案 > for循环在java中跳转输入

问题描述

这是一个程序,在输入中给出 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];
            }
        }
    }

}

}

标签: javaeclipse

解决方案


你误解了 nextLong(); 它只是读取 long 值,然后即将到来的 nextLine() 由来自控制台的新行条目触发。

在 nextLong() 调用之后放置一个 sc.nextLine() ,或者更好的是使用 nextLine() 将电话号码读取为字符串,然后从中解析一个 long 。


推荐阅读