从单独的类静态调用布尔方法

时间:2017-03-18 22:23:36

标签: java class methods boolean

我有一个程序,它接受输入字母,然后将每个字母的数值相加。

我有它,所以如果我输入" abc",我的输出是" 6"。

我忽略大写字母,所以如果我输入" abC",我的输出是" 3"。

我现在要做的是,在一个单独的类中,创建一个方法,如果设置为true将按原样运行我的主程序,但是当它设置为false时,它会将大写字母视为小写,给出" abC"的输入," 6"的输出。

我希望这是有道理的,我尝试了一些不同的东西,但它们都按原样运行程序,忽略大写。

这是我的代码,我感谢任何建设性的反馈。

由于

编辑:我也很感激,如果你没有向我提出问题,如果你不想提供帮助,似乎我提出的每一个问题都没有明显或公平原因。因为我知道这会发生,所以我不想寻求帮助。我们都开始到某个地方了!

主要方法:

    Scanner scan = new Scanner(System.in);

    System.out.println("\nPlease enter the letters you would like to use:");

    String s, t = "";

    scan.next();

    s = scan.next();

    boolean b = Converter.caseSensitive(false, s);

    scan.close();

    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);

        if (!t.isEmpty()) {
            t += ",";
        }


        if (ch >= 'a' && ch <= 'z') {
            int n = ch - 'a' + 1;
            t += String.valueOf(n);
        }
    }

单独类中的第二种方法:

public class Converter {

public static boolean caseSensitive(Boolean b, String s) {

    for (char c : s.toCharArray()) {
        if (Character.isLetter(c) && Character.isLowerCase(c)) {
            b = s.equalsIgnoreCase(s);
            return false;
        }
    }

    s = s.toLowerCase();
    return true;
}
}

3 个答案:

答案 0 :(得分:1)

我相信您的问题是&#34;如何在类中记录静态布尔值,然后从另一个类请求它?&#34;

public class Configuration {
    private static boolean convertToUppercase = true;

    public static void setConvertToUppercase(boolean convert) {
        convertToUppercase = convert;
    }

    public static boolean getConvertToUppercase() {
        return convertToUppercase;
    }
}

这可以用作:

StringConverter.caseSensitive(Configuration.getConvertToUppercase(), input);

请注意,大多数程序员(包括我)会考虑这种糟糕的设计,但解释为什么不在你的问题范围内。

您的代码还有很多其他问题。例如,上面的方法调用将保持输入字符串不变。但是,当你遇到问题时,我建议你只用相关代码提出另一个问题。

答案 1 :(得分:1)

String在Java中是不可变的。有关此主题的更多信息,请阅读以下stackoverflow问题: String is immutable. What exactly is the meaning?

public static void main(String[] args) throws Exception
{
    String test = "abc";
    toUpperCase(test);
    System.out.println(test);
}

private static void toUpperCase(String test)
{
    test = test.toUpperCase();
}

请注意,上面的代码将输出:

  

ABC

为了拥有&#34; ABC&#34;因此,您需要使用以下代码:

public static void main(String[] args) throws Exception
{
    String test = "abc";
    test = toUpperCase(test);
    System.out.println(test);
}

private static String toUpperCase(String test)
{
    return test.toUpperCase();
}

这个输出:

  

ABC

所以你的Converter.caseSensitive方法应该返回 String

答案 2 :(得分:1)

我认为你真的不需要Converter课程。您可以删除类并替换该行:

boolean b = Converter.caseSensitive(false, s);

用这个

boolean shouldCountUppercaseLetters = false;

if (shouldCountUppercaseLetters) {
    s = s.toLowerCase();
}