【问题标题】:Turning input into ASCII将输入转换为 ASCII
【发布时间】:2016-09-29 16:12:30
【问题描述】:

我需要获取 32 到 93 之间的 ASCII 字符并让它们返回 true 值,否则这些参数之外的任何其他字符都将返回 false 值。

public static boolean safeToUse(String plaintext) {  
    plaintext = plaintext.toUpperCase();  

        for (char i=1; plaintext.length(); i++);  
        (i >32 && i < 93);
        return true;    
        else return false;
}  

然后我有另一个文件,该文件采用此代码并吐出真假:

String plaintext;
    plaintext = "!";
    if (CryptoCode.safeToUse(plaintext)) {
        System.out.println("Yay, it's a valid message to crypt!");
    }
    else {
        System.out.println("Ooops.");
    }

但我每次得到的唯一返回值是返回 true,无论它是否为 false。如果我将我的“返回真”值从第一个代码切换为“返回假”,每个答案都会吐出一个假值,无论它是否为真......

【问题讨论】:

  • safeToUse 完全没有意义。你认为你应该循环什么?
  • 提示:1) 你可能想要String.charAt()。 2) 调用toUpperCase() 并忽略结果是没有意义的。请注意,字符串是不可变的。
  • 您的 for 循环甚至没有考虑 plaintext 参数。你应该阅读 Java - 你的循环总是以i == 1 开头,因为它不在“安全”范围内,所以立即退出
  • for (char i=1; i&gt;32 &amp;&amp; i&lt;93; i++); 你希望它做什么?
  • 我不知道它会做什么,这是我第二周的课..我正在研究我已经展示过的示例以及我在互联网上可以找到的内容..跨度>

标签: java ascii


【解决方案1】:

我不确定您为什么要转换为大写,但如果您仍然需要这样做,您可以修改下面的示例代码。另外,从您的陈述中我不确定过滤是否意味着包含或排除 32 和 93 的边缘值。我将由您决定。

public static boolean safeToUse(String plaintext) {  

      for (int i = 0; i < plaintext.length(); i++)
      {
           char c = plaintext.charAt(i);
           boolean valid = ( ((c >= 'a') && (c <= 'z'))  ||
                             ((c >= ' ') && (c <= ']')) );  // space is 32. right bracket is 93
           if (valid == false)
           {
               return false;
           }
      }

      return true;
} 

【讨论】:

  • toUpperCase 用于包含小写字母,因为此范围内只有大写字母 asciitable.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2021-05-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多