我正在用多种不同的方法制作程序,其中一种是:
function getParams(foo, bar, functionParam) {
if (typeof bar === 'function')
{
console.log("bar is a function");
const result = bar(functionParam);
console.log('function result: ', result);
}
console.log(typeof bar); // string: because i returned string. But why not a "function" ?
}
function temp(element) {
return element;
}
// Did you mean to do this?
function runThis2() {
getParams("hello", temp, 'my function param');
}
runThis2();
我收到错误消息,“类型为String的方法“ nextLine()”未定义”
但是,扫描器明确定义在我的课程的顶部,
private static void IsWordPattern(String input) {
String pattern = "";
System.out.println("Enter a pattern of letters: ");
pattern = input.nextLine();
}
我可以在主要功能中使用扫描仪而不会出现错误:
public class StringValidation {
static Scanner input= new Scanner(System.in);
我还可以在另一个私有和静态方法中使用它:
private static int Menu(int选择){
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("Enter a string: ");
String userInput = input.nextLine();
我尝试了多种方法来修复此错误,包括将Menu函数定义更改为“ private static void Menu”,但该方法也不起作用。为什么会出现此错误,我该怎么办。任何反馈都值得赞赏。
答案 0 :(得分:3)
您的方法参数遮盖了您的具有相同名称的类字段。您可以更改参数名称,也可以使用this.
调用class字段,例如
pattern = this.input.nextLine();
注意:要访问静态类变量,您可以使用类名而不是this
关键字,在这种情况下,它将是StringValidation.input.nextLine()
答案 1 :(得分:2)
该类中的扫描程序变量被名为input
的String参数遮盖。您应该重命名功能参数,然后扫描仪再次可见。