我有一个程序,它接受输入字母,然后将每个字母的数值相加。
我有它,所以如果我输入" 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;
}
}
答案 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();
}