java - 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];
}
}
}
}
}
解决方案
你误解了 nextLong(); 它只是读取 long 值,然后即将到来的 nextLine() 由来自控制台的新行条目触发。
在 nextLong() 调用之后放置一个 sc.nextLine() ,或者更好的是使用 nextLine() 将电话号码读取为字符串,然后从中解析一个 long 。
推荐阅读
- python - Python Selenium Traceback(最近一次调用最后一次):
- wix - 如何在使用 Windows 安装程序进行修补期间重命名组件下的基本文件元素名称?
- javascript - 过滤器状态在 React 中无法正常工作
- mysql - SQL:连接具有大量列的表时删除重复列
- python - Seaborn 热图行为
- r - data.table 根据变量分配新列
- java - LibGDX 如何将游戏放在桌面上?*** 固定的 ***
- c++ - 如何使用 Openthread 库编写简单的应用程序
- perl - 在数值中插入逗号(INR值) - Perl
- f# - 使常量成为从 F# 中的函数生成的字符串