2012-02-09 73 views
2

我试图解析出一个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]); 
+0

这可能是因为'下一个()'是一个'Scanner' * *实例方法,你也不会称它在扫描仪上的实例。解析也是不正确的。 – 2012-02-09 01:32:14

+0

你应该使用keyboard.next(),而不是Scanner.next。对不起,必须降低这一点。 – 2012-02-09 01:33:04

+2

@Petro,为什么OP的困惑值得赞扬?这不就是为什么存在,为了清除这种共同的困惑? – kaveman 2012-02-09 01:34:23

回答

5

变化:

String date = Scanner.next(); 

到:

String date = keyboard.next(); 

next()是一个实例方法,所以你必须调用它的类扫描仪的一个实例。

此外,变化:

String temp = date.split("/"); 

到:

String[] temp = date.split("/"); 

split()方法返回一个字符串数组。

+0

实际解释答案的唯一答案! – kaveman 2012-02-09 01:36:33

+0

现在它抱怨下一行不兼容的类型String temp = date.split(“/”); //解析日期 – 2012-02-09 01:48:20

1

它应该是keyboard.next()而不是Scanner.next()

+0

感谢所有的帮助朋友 – 2012-02-09 02:39:11

+1

嗨伊恩和欢迎。你不应该直接写(写)谢谢,而是提出答案(下面的Δ)并接受最好的答案(用√)。这给予了回复者的声望并避免冗长的对话(“谢谢”/“不客气”/ ...)。 – 2012-02-09 02:45:52

1

你的意思是

String date = keyboard.next(); 

,而不是

String date = Scanner.next(); 
1

更改代码:

String date=Scanner.next(); 

到:

String date = keyboard.next(); 
相关问题