2016-04-08 75 views
0

我是新來的Java和大約一半通過我的第一個Java課程。這周的實驗任務指令是:不兼容的類型:java.util.lang.String不能轉換爲stringdemo.String

  1. 創建一個名爲StringDemo

  2. 編寫一個叫做backward()方法接受一個String對象作爲參數和落後顯示其內容的新項目。例如,如果字符串參數是「重力」,則該方法應該顯示 - 「ytivarg」。在程序中演示該方法,要求用戶輸入一個字符串,然後將其傳遞給該方法。

  3. 編寫一個名爲wordCount()的方法,它接受一個String對象作爲參數並返回它包含的單詞數。在這種情況下,我們將假定空格分隔單詞。例如,如果參數是「四分和七年前」,則該方法應該返回數字6.在程序中演示該方法,要求用戶輸入一個字符串,然後將其傳遞給方法。屏幕上應顯示字符串中的字數。 (提示:split()字符串的方法可能是有用的。)

我目前的問題2,但我收到我的鍵盤輸入行此錯誤:

不兼容的類型:java.util中.lang.String不能轉換爲 stringdemo.String

有人可以告訴我如何解決這個問題嗎?

謝謝。

import java.util.*; 

public class StringDemo { 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String input; 

     // Create a Scanner object for keyboard input 
     Scanner keyboard = new Scanner(System.in); 

     // Get user input 
     System.out.print("Enter a word or phrase to be reversed: "); 
     input = keyboard.nextLine(); 

     // Reverse the input using StringBuilder 
     StringBuilder input1 = new StringBuilder(); 
     input1.append(input); 
     input1 = input1.reverse(); 

     for (int i = 0; i < input1.length(); i++) 
      System.out.print(input1.charAt(i)); 
    } 

} 
+0

我能運行程序並獲得預期的輸出。你如何編譯和運行代碼? (順便說一下,我認爲你不應該使用內置的反轉方法來完成作業) – Bajal

+2

你是否在包'stringdemo'中創建了一個名爲'String'的類?這將與'java.lang.String'發生衝突,就像錯誤說的那樣。 –

+0

將聲明'input'的行更改爲:'java.lang.String input;' –

回答

1

您需要刪除或重命名您的stringdemo.String類。 Java的聯規則規定,在同一個包中的類是語言類之前匹配,這意味着你的

String input; 

被解釋爲

stringdemo.String input; 

,而不是作爲

java.lang.String input; 
+1

另一種解決方案是將'input'聲明爲'java.lang.String'。 –

+3

另一個解決方案,除非你喜歡混淆,否則不要重複使用與Java中常見類相同的名稱。 –

+1

@PeterLawrey完全像awt開發人員用他們的'java.awt.List' :) –

相關問題