Java 如何在数组中打印选定的名称?
如何在数组中打印所选名称?我想打印我在数组中输入的名称并单独打印,但当我尝试运行代码时,它会显示:Java 如何在数组中打印选定的名称?,java,for-loop,Java,For Loop,如何在数组中打印所选名称?我想打印我在数组中输入的名称并单独打印,但当我尝试运行代码时,它会显示: Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.next(Scanner.java:1594) at ja
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.main(Main.java:17)
这是我的密码:
Scanner in = new Scanner(System.in);
int numOfLoop = in.nextInt(); //number of loops I want.
String[] name = new String[numOfLoop]; //size of the array is depend on how many loop I want.
//Getting the names using for loop.
for(int i = 0; i < numOfLoop; i++) {
name[i] = in.nextLine();
}
int num = in.nextInt(); //The name I want to print depend on what number I enter here.
//Reading the array one by one to print the name I want.
for(int i = 0; i <numOfLoop; i++) {
if(name[i] == name[num]) {
System.out.println(name[i]);
}
}
预期输出:cody要解决的代码片段中有几个典型的缺陷: InputMismatchException-因为在调用nextInt后,并非所有新行都被正确使用 名称[i]==名称[num]-无效的字符串比较,应为名称[i]。EqualName[num] 缺少check num
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int numOfLoop = Integer.parseInt(in.nextLine()); // number of loops I want.
String[] name = new String[numOfLoop]; // size of the array is depend on how many loop I want.
// Getting the names using for loop.
for (int i = 0; i < numOfLoop; i++) {
name[i] = in.nextLine();
}
int num = Integer.parseInt(in.nextLine()); // The name I want to print depend on what number I enter here.
if (num >= 0 && num < numOfLoop) {
System.out.println(name[num]);
} else {
System.out.println("Invalid index.");
}
}
}
我以前也遇到过这个问题,当您从nextLine更改时,扫描器实例似乎在转到nextLine之前没有读取\n字符 只需在For循环之前添加in.nextLine;即可解决问题
您的错误源于这样一个事实:数组中的第一个条目被设置为空字符串,而您输入的姓氏被读取到通常放置第二个数字的位置,因此nextInt抛出错误,因为它获取的是字符串而不是int。它是name[i]。equalname[num]对于字符串相等。此外,您只需要执行以下操作:ifname.length>num System.out.printlnname[num];这将匹配引用而不是内容。但如果索引中只需要该项,则根本不需要进行相等性检查。@AbraI最初还认为第二个循环可能是多余的,尽管它有助于检测和打印名称数组中的任何重复项:是否不需要第二个for循环?@AlexRudenko@Johny -根据您的要求,您不需要第二个循环。如果您仔细阅读,您将更容易理解此答案。如果您运行它并查看其行为是否符合您的预期,这将对您有进一步的帮助。如果有任何进一步的疑问/问题,请随时发表评论。@Johny,这取决于您。该循环允许检测重复的na如[my answer]中所示,如果没有循环,您只需在指定索引处打印一项。
Input the number of names:
5
Input the names, one per line:
john
jeff
joan
john
jake
Input the index of the name to print:
0
Looking for name: john
john at index=0
john at index=3
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int numOfLoop = Integer.parseInt(in.nextLine()); // number of loops I want.
String[] name = new String[numOfLoop]; // size of the array is depend on how many loop I want.
// Getting the names using for loop.
for (int i = 0; i < numOfLoop; i++) {
name[i] = in.nextLine();
}
int num = Integer.parseInt(in.nextLine()); // The name I want to print depend on what number I enter here.
if (num >= 0 && num < numOfLoop) {
System.out.println(name[num]);
} else {
System.out.println("Invalid index.");
}
}
}
5
Johny
Arvind
Kumar
Avinash
Stackoverflow
3
Avinash
Scanner in = new Scanner(System.in);
int numOfLoop = in.nextInt(); //number of loops I want.
String[] name = new String[numOfLoop]; //size of the array is depend on how many loop I want.
for (int i=0; i<name.length; i++){
String names = in.next();
name[i] = names;
}
System.out.println("The names array: " + Arrays.toString(name));
for(int index=0;index<name.length;index++) {
System.out.print("Enter an index you want to print: ");
index = in.nextInt();
System.out.println("index " + index + " is: " + name[index-1]);
}