微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 Validare Zip Code(boolean) 程序返回 false?

如何解决为什么我的 Validare Zip Code(boolean) 程序返回 false?

程序指令是:邮政编码由5个连续数字组成。提示用户输入一个五位数的邮政编码作为字符串。创建一个名为 isValid 的 Java 方法,并将 String 作为参数传递给该方法。在方法中确定输入是否是有效的邮政编码。有效的邮政编码如下: 必须只包含数字(不允许非数字)。 不得包含任何空格。 长度不得超过 5 位数字。 如果邮政编码有效,则返回 true 给 main 方法,否则返回 false。

每次我输入有效的邮政编码时,它仍然显示错误

这是我的代码

import java.util.Scanner;
public class Main
{
  public static void main (String[]args)
  {
    Scanner input = new Scanner (system.in);
      System.out.println ("Enter a zip code: ");
    String zipCode = input.nextLine ();

      System.out.println (isValid (zipCode));
  }
  public static boolean isValid (String zipCode)
  {
    boolean yes = false;
    int i = 0;
    for (i = 0; i < zipCode.length (); i++)
      {
    
    int digit = zipCode.charat (i);
    //if only contains number
    if (digit > 48 && digit < 57)
      {
        System.out.println (digit);
      }
    else
      {
        return false;
      }

    int len = zipCode.length ();
    if (len == 4)
      {
        System.out.println (len);
      }
    else
      {
        return false;
      }

      }
    return yes;
  }
}

解决方法

您应该同时包含 0 和 9 ,因此,请更改此行

if (digit > 48 && digit < 57)

if (digit >= 48 && digit <= 57)

另一方面,zip 的长度应该是 5 而不是 4,因此,请更改此行:

if (len == 4)

if (len == 5)
,

您可以重构代码并使用匹配器以减少验证。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a zip code: ");
        String zipCode = input.nextLine();

        System.out.println(isValid(zipCode));
    }

    public static boolean isValid(String zipCode) {
        boolean yes = false;
        // Check that only digits are accepted and the length is equals to 4
        if (zipCode.matches("[0-9]+") && zipCode.length() == 4) {
            yes = true;
        }
        return yes;
    }
}
,
boolean yes = false;
return yes;
if (len == 4) {
...
} else {
   return false;
}

你的两个具体错误。

更一般地说,您需要学习如何调试。最终,您将获得一些基本的眼球错误技能,但只有最简单的错误才能引起眼球。 (这肯定是一个词,不是吗?)

如果有必要,拿出笔和纸,但游戏的名称是:你计算你认为代码应该在你脑海中做什么。然后你让计算机去做并比较注释:每个变量应该是什么,每次调用的结果是什么?交叉检查你的想法。你和电脑哪里不同意?错误。

然后只需选择一些输入即可。调试器使这变得更简单,但一些 System.out.println 语句和一些汗水也会处理它。

下次这样做,而不是询问 SO。这是一个很好的练习,如果你做不到这一点,你将永远不值得作为程序员的一罐 bean。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。