调用方法比较两个字符串| Java的

时间:2015-03-25 17:45:05

标签: java string methods compare user-input

我有两个类,StringCompare和StringCompareTest。

StringCompare创建2个字符串,这些字符串将由StringCompareTest中的用户输入分配,并具有比较字符串的方法。

在StringCompareTest中,它不会调用方法 - "非静态方法compareStrings()不能从静态上下文中引用"

任何人都可以帮我调用方法并允许我的程序运行吗?

提前谢谢。

public class StringCompare {

    // Create two strings 
    String s1 = "";
    String s2 = "";

    // Create method to compare them, to be called in StringCompareTest
    void compareStrings() {
        if (s1.equals(s2)) {
            System.out.println("The strings are equal!");
        } else {
            System.out.println("The strings are not equal!");
        }
    }


}

`

import java.util.Scanner;

public class StringCompareTest {

public static void main(String[] args) {

    StringCompare stringCompare = new StringCompare ();

    // Create Scanner object to get input
    Scanner keyboard = new Scanner(System.in);

    // Get strings from user & assign values to strings
    System.out.println("Enter your first string: ");
    String s1 = keyboard.nextLine();

    System.out.println("Enter your second string: ");
    String s2 = keyboard.nextLine();

    // Call compareStrings
    compareStrings();

}

}

4 个答案:

答案 0 :(得分:0)

将compareString方法设为静态,在这种情况下,您应该将两个String作为参数传递...

public static void compareStrings(s1, s2)

...或者创建一个StringCompare实例,设置s1和s2的值,并调用实例的方法

StringCompare sc = new StringCompare();
sc.s1 = string1;
sc.s2 = string2;
sc.compareString()

无论哪种方式,我都没有看到任何需要StringCompareTest扩展StringCompare。

答案 1 :(得分:0)

您正在使用静态方法(compareStrings())调用非静态方法main(String[])。这是不可能的,因为调用者没有与类的实例相关联,而被调用的方法是!

也就是说,您需要创建StringCompare的实例,然后调用该方法。例如,

StringCompare scmp = new StringCompare(s1, s2);
StringCompare.compareStrings();

请注意,在您的代码中,main方法中的变量s1和s2在StringCompare类中并不相同。您需要创建一个带有两个字符串参数的构造函数。

答案 2 :(得分:0)

//Try this:

public static void main(String[] args) {

...
StringCompare compare = new StringCompare();
compare.compareStrings(s1,s2);

}

public void compareStrings(String s1, String s2) {


        if (s1.equals(s2)) {
            System.out.println("The strings are equal!");
        } else {
            System.out.println("The strings are not equal!");
        }
    }

答案 3 :(得分:0)

你不能调用非静态方法并将非静态实例变量访问到静态方法中。如果你想要访问这些,静态方法意味着static void main()方法你应该通过两种方式来实现

<强>路-1

将实例变量s1和s2声明为静态,并将方法void compareStrings()声明为类StringCompare中的静态。

static String s1 = "";
static String s2 = "";

static void compareStrings() {
        if (s1.equals(s2)) {
            System.out.println("The strings are equal!");
        } else {
            System.out.println("The strings are not equal!");
        }
    }

<强>路-2

通过创建void compareStrings()类的对象,将方法StringCompareTest调用到StringCompare类。

StringCompare sc = new StringCompare();   
sc.compareStrings();