2012-02-09 74 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(); 
相關問題