我正在处理一个存储名称字符串和一个整数年龄的数组,我希望该数组最大为4并打印出这些结果,除非用户输入单词'done',如果是的话程序终止并且数组输出它存储的内容。当用户输入'完成'时终止Java程序
阵列工作正常,但似乎无法得到“完成”部分,我目前使用的if语句.equals
有什么建议?
感谢
import java.util.Scanner;
import java.util.ArrayList;
public class NameAge {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int MAX_VALUE = 4;
//boolean name = false;
ArrayList<String> nameList = new ArrayList<String>();
ArrayList<Integer> ageList = new ArrayList<Integer>();
Integer[] ages = new Integer[4];
for (int i = 0; i < MAX_VALUE; i++) {
System.out.print("Enter a name: ");
String currentLine = input.next();
if (currentLine.equals("done")) {
break;
}
nameList.add(currentLine);
System.out.print("Now enter an age for " + currentLine + ": ");
ageList.add(input.nextInt());
}
System.out.print("\n");
for(int i = 0; i < MAX_VALUE; i++) {
System.out.println("Name: " + nameList.get(i) + " Age: " + ageList.get(i));
}
// display youngest and oldest member of array
int smallest = ageList.get(0);
int largest = ageList.get(0);
String oldest = nameList.get(0);
String youngest = nameList.get(0);
for (int i = 0; i < ages.length; i++) {
if(ageList.get(i) > largest) {
largest = ageList.get(i);
oldest = nameList.get(i);
} else if(ageList.get(i) < smallest) {
smallest = ageList.get(i);
youngest = nameList.get(i);
}
}
System.out.println("\nThe youngest person is " + youngest + " who is " + smallest + " years old");
System.out.println("The oldest person is " + oldest + " who is " + largest + " years old");
}
}
可能的复制[如何在输入完成后终止扫描器?](http://stackoverflow.com/questions/16206813/how-to-terminate-scanner-when-input-is-complete) – DimaSan
你的'nameList'是一个'ArrayList '虽然不会等于'String''“完成”'。同样你的变量'name'似乎是无用的,因为它只是在'if'里面,它被设置为true。您可能希望在if语句之前将输入读入到字符串输入中,然后处理当前输入应该从那里进行的操作。 – SomeJavaGuy