以下Java方法假设通过键盘从用户接受字符串(人名),在名为name[]
的数组中搜索该名称,并从数组中删除该人的姓名(通过分配{{ 1}})。
代码尝试使用name[i] = "INVALID"
类对象Scanner
接受输入字符串(人名),但我在语句中得到del_name
NoSuchElementException
,即来自顶部的第四个声明。
如果有人能提供解决方案并解释为什么这段代码不起作用,我将非常感激。 (谢谢)
s=del_name.next();
答案 0 :(得分:1)
将.next()
更改为.nextLine()
。
Scanner del_name=new Scanner(System.in);
String s;
System.out.println("Enter the name to be deleted");
s=del_name.nextLine();
Scanner.next()返回当前输入的内容,即使没有输入(给出错误)。 Scanner.nextLine()跳过当前行,并返回跳过的部分。
答案 1 :(得分:0)
试试,
del_name.nextLine()
使用next()
只会返回空格之前的内容。返回当前行后,nextLine()
会自动将扫描仪向下移动。
next():
查找并返回此扫描仪的下一个完整令牌
nextLine():
使此扫描器前进超过当前行并返回跳过的输入。
答案 2 :(得分:0)
您发布的代码不会按原样抛出异常。您可能在此方法调用之前已经做了一些导致这种情况的事情。作为证明,运行此代码:
public class Test {
static String[] name = new String[] {"AAA", "BBB", "CCC"};
static void deletee() {
Scanner delName = new Scanner(System.in);
System.out.println("Enter the name to be deleted");
String s = delName.next();
boolean found = false;
for (int i = 0; i < name.length; i++) {
if (name[i].equalsIgnoreCase(s)) {
name[i] = "INVALID";
System.out.println("Deletion Successful");
found = true;
break;
}
}
if (!found)
System.out.println("No such person exist");
delName.close();
}
public static void main(String[] args) {
deletee();
for (int i = 0; i < name.length; i++)
System.out.print(name[i] + ", ");
}
}
备注强>: