【问题标题】:Issue with Java - odd even lettersJava问题-奇偶字母
【发布时间】:2018-11-20 19:28:27
【问题描述】:

我正在努力从用户输入中获取输出,以仅显示奇数或偶数(如果第一个 CharAt(0) == 'w' 为例)。

它是否通过“System.out.println(CharAt(0) + CharAt(2) + CharAt(4))”工作?

我正在使用 Scanner 项目来获取用户输入,并且已经有了以下输入部分:

Scanner input = new Scanner(System.in);
System.out.print("Please enter a uncoded string: ");
String first = input.nextLine();
input.close();

if (first.charAt(0) == 'u') {
  first = first.toUpperCase();
} else if (first.charAt(0) == 'l') {
  first = first.toLowerCase();
} else if (first.charAt(0) == 'o') {
      first = first.charAt(0) + charAt(2) + charAt (4);
}

System.out.println("The decoded string is: " + first);

有没有办法只使用像 (0 + 奇数) 这样的公式?

【问题讨论】:

  • 我考虑过String int i = o,然后只需添加2、4等即可从输入中选择奇数。只需要根据用户输入的单词长度尝试让它工作。
  • 此外,这将适用于偶数字母,如 charAt(1)、charAt(3) 等。
  • 如果输入长度为 10 怎么办
  • 考虑使用循环。

标签: java


【解决方案1】:

我猜你正试图通过检查前缀字符来“解码”一个“编码”字符串:

Scanner input = new Scanner(System.in);
System.out.print("Please enter a uncoded string: ");
String first = input.nextLine();
input.close();

if (first.charAt(0) == 'u') {
    first = first.toUpperCase();
} else if (first.charAt(0) == 'l') {
    first = first.toLowerCase();
} else if (first.charAt(0) == 'o') {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < first.length(); i = i + 2) {
        sb.append(first.charAt(i));
    }
    first = sb.toString();
} else if (first.charAt(0) == 'e') {
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i < first.length(); i = i + 2) {
        sb.append(first.charAt(i));
    }
    first = sb.toString();
}
System.out.println("The decoded string is: " + first);

我不确定在前缀“o”的情况下,您是否希望此前缀包含在结果中。
编辑
如果你不喜欢 StringBuilder:

} else if (first.charAt(0) == 'o') {
    String str = "";
    for (int i = 0; i < first.length(); i = i + 2) {
        str += first.charAt(i);
    }
    first = str;
} else if (first.charAt(0) == 'e') {
    String str = "";
    for (int i = 1; i < first.length(); i = i + 2) {
        str += first.charAt(i);
    }
    first = str;
}

【讨论】:

  • 嗨,这行得通,即使首先选择 chatAt 值为“1”也行得通。诠释 i = 1; i
  • 它适用于您选择的任何字符。我以为你想要“e”来表示偶数。
  • 你必须用你选择的字符改变 if 语句中的 'e'。
  • 那行得通,StringBuilder 会是一种复杂的 String 方式来做到这一点。我刚刚开始,不确定是否有任何其他方法可以构建 SubString 来选择奇数和偶数值。再次感谢您的帮助。
  • 当涉及多个连接时,StringBuider 总是优于字符串。您可以对字符串执行相同的操作,例如:str+= first.charAt(i);
猜你喜欢
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多