有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我的Validare邮政编码(布尔)程序返回false?

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

每次我输入一个有效的邮政编码,它仍然会显示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;
  }
}

共 (3) 个答案

  1. # 1 楼答案

    boolean yes = false;
    return yes;
    
    if (len == 4) {
    ...
    } else {
       return false;
    }
    

    你的两个具体错误

    一般来说,您需要学习如何调试。最终你会掌握一些基本的判断错误的技巧,但只有最简单的错误才是可以判断的。(这肯定是一个词,不是吗?)

    如果必须的话,拿出笔和纸,但是游戏的名字是:你计算你认为代码应该在你的头脑中做什么。然后你让计算机做这件事,并比较注释:每个变量应该是什么,每次调用的结果是什么?对照你的想法。你和电脑有什么不同?虫子

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

    下次就这么做,别再问了。这是一种很好的锻炼,如果你做不到这一点,作为一名程序员,你将永远一文不值

  2. # 2 楼答案

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

    if (digit > 48 && digit < 57)
    

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

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

    if (len == 4)
    

    if (len == 5)
    
  3. # 3 楼答案

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

    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;
        }
    }