2016-04-08 39 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' :) –

相关问题