Java 无法从静态上下文引用非静态方法next()
我试图将Java 无法从静态上下文引用非静态方法next(),java,static,scope,non-static,Java,Static,Scope,Non Static,我试图将mm/dd/yyyy格式的日期解析为单独的字段,但在尝试编译时,我遇到以下错误: 无法从静态上下文引用非静态方法next() 是什么导致了错误 import java.util.Scanner; public class Problem39 { public static void main(String [ ] args) { boolean isLeapYear =false; int maxDay=0; String stringDat
mm/dd/yyyy
格式的日期解析为单独的字段,但在尝试编译时,我遇到以下错误:
无法从静态上下文引用非静态方法next()
是什么导致了错误
import java.util.Scanner;
public class Problem39
{
public static void main(String [ ] args)
{
boolean isLeapYear =false;
int maxDay=0;
String stringDate;
System.out.println("Enter the date in mm/dd/yyyy format. "); //user input
Scanner keyboard = new Scanner(System.in); //read input
String date=Scanner.next(); //store input
String temp=date.split("/"); //parse date
int month=IntegerParseInt(temp[1]);
int day=IntegerParseInt(temp[0]);
int year=IntegerParseInt(temp[2]);
更改:
String date = Scanner.next();
致:
是实例方法,因此必须在类Scanner的实例上调用它
此外,改变:
String temp = date.split("/");
致:
该方法返回一个字符串数组。它应该是
keyboard.next()
而不是Scanner.next()
您的意思是
String date = keyboard.next();
而不是
String date = Scanner.next();
更改代码:
String date=Scanner.next();
致:
它不是integerparsent
也换成这个
String date = keyboard.next();
这可能是因为
next()
是一个Scanner
实例方法,您没有在Scanner实例上调用它。解析也不正确。@Petro,为什么OP的混乱值得否决?这不就是为什么会存在这样的问题吗?为了澄清这些常见的困惑,还将IntegerParseInt
更改为Integer.parseInt
@kaveman,只是静态/实例方法之间的差异是非常基本的java知识。关于stackoverflow还有三个问题“为什么不能从静态上下文引用非静态方法”已经回答了。这是唯一一个真正解释答案的答案!现在它正在抱怨下一行字符串temp=date.split(“/”)上的不兼容类型//欢迎你,伊恩。你不应该直截了当地说(写)谢谢,但要把答案(答案下面的Δ)投上去,然后接受最好的答案(用√). 这给了回答者声誉,避免了冗长的对话(“谢谢”/“不客气”/…)。
String date=Scanner.next();
String date = keyboard.next();
String date = keyboard.next();