【问题标题】:A char between two ASCII values Java两个 ASCII 值之间的字符 Java
【发布时间】:2015-10-26 16:51:08
【问题描述】:

我是 Java 的初学者,我目前正在编写一个代码,其中所有的 char 符号都打印出来,但字母的打印方式不同。如何排除符号的 ASCII 值?是否可以做这样的事情(其中32和64等值表示字符对应的ASCII值):

char notLetter = (originalMessage.charAt(i));

     if ((32 <= notLetter <= 64) || (91 <= notLetter <= 96) || (123 <= notLetter <= 126)){
       codedMessage += notLetter;
}

或者有更简单的方法吗?谢谢

编辑:当我尝试这段代码时,我收到以下错误:“

【问题讨论】:

  • 您是否尝试过完全按照您的要求进行操作?
  • 我不确定你在问什么,但是将 char 转换为 int 会给你 ASCII 值,反之亦然。
  • 这甚至无法编译。
  • 这将如何工作? 32 &lt;= notLetter &gt;= 64 这种格式真的有效吗?如果是这样,不应该是32 &lt;= notLetter &lt;= 64

标签: java char ascii


【解决方案1】:

我不确定您到底想做什么,但这里有一些一般信息。

  1. 使用char'a' 这样的文字,而不是它们的int 值。这使得程序更容易遵循。
  2. 在大多数情况下,您应该使用StringBuilder 而不是字符串连接。
  3. Java 不支持2 &lt;= a &lt;= 5 之类的表达式,因此您必须改为使用2 &lt;= a &amp;&amp; a &lt;= 5

以下代码打印, !

String x = "Hello, World!";
StringBuilder sb = new StringBuilder();
for (char c : x.toCharArray()) {
    if (!(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')) {
        sb.append(c);
    }
}
System.out.println(sb.toString());

【讨论】:

    【解决方案2】:
    char notLetter = (originalMessage.charAt(i));
    
         if ((32 <= notLetter  && notLetter   <= 64) || (91 <= notLetter  && notLetter <= 96) || (123 <= notLetter && notLetter<= 126)){
           codedMessage += notLetter;
    }
    

    试试这个。

    32 &lt;= notLetter &gt;= 64

    这不起作用有两个原因:

    1. 不支持该格式。
    2. 大于 32 和大于 64 的数字就是任何大于 64 的数字

    【讨论】:

      【解决方案3】:

      32 &lt;= notLetter &gt;= 64 在 java 中是不合法的,但32 &lt;= notLetter &amp;&amp; notLetter &gt;= 64 是允许的。然而,这也永远不会是真的——你是说32 &lt;= notLetter &amp;&amp; notLetter &lt;= 64吗?

      需要注意的另一件事可能对您有所帮助:您实际上可以使用&lt;=,两边都带有一个字符:

      (' ' <= notLetter && <= '@')
      

      如果我理解你想做什么,这将做你想做的:

      char notLetter = (originalMessage.charAt(i));
      
      if ((' ' <= notLetter && notLetter <= '@') || ('[' <= notLetter && notLetter <= '`') || ('{' <= notLetter && notLetter <= '~')){
          codedMessage += notLetter;
      }
      

      【讨论】:

        【解决方案4】:

        我会使用带有 isAlphabetic() 函数的 Character Object 类: http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isAlphabetic(int)

        ASCII 和 Unicode 应该匹配。

        【讨论】:

        • 我做了,那是一个错字。现已修复
        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2019-01-12
        • 2019-08-13
        • 2020-10-29
        相关资源
        最近更新 更多