【问题标题】:[JAVA Help using 'for' and reusing methods from other parts of the class[JAVA帮助使用'for'和重用类其他部分的方法
【发布时间】:2017-12-09 20:46:55
【问题描述】:

我需要一些关于我正在使用的方法的帮助。 我的第一个方法查看字符串 s 中第一个(第 0 个)之后的每个字符,并检查它们是否是数字,但我无法让它完全工作。

/**
* Forms the latter 5 characters of the accountNum String into a substring 
which is checked to
* see if all characters are positive integers
*/
public Boolean hasValidDigits(String s)
{
 for(int i=1; i<s.length(); i++)
    if (Character.isDigit(s.charAt(i)))  {
    return true;
   }
}

该方法的问题是它要求为“for”提供返回语句,我不知道为什么。

我的第二个方法调用类其他部分的方法来检查字符串 s。

/**
* Checks the following three criteria:
* - Is a string of length 6
* - Starts with a capital Letter
* - Subsequent characters are positive integers
*/
public Boolean isValidAccountNum(String s)
{
  if (s.isValidLength() s.isValidStart() s.hasValidDigits())  {
  return true;
  } else {
     return false;
 }
}

这个方法的问题是它说“找不到符号 - 方法 isValidLength()

我猜它会与其他方法有相同的错误。

我想调用的方法都是公开的。我将在下面包含 isValidLength()。

/**
* Checks if the variable accountNum has a length of 6 characters
*/
public Boolean isValidLength(String s)
{
if (s.length()==6) {
  return true;
   } else {
    return false;
 }
}

【问题讨论】:

    标签: java for-loop


    【解决方案1】:

    如果您的 if 条件不成立,您的第一个方法可能不会返回任何内容,因此您需要在函数的最后一行返回一些内容。 您的第二种方法没有传递任何参数,并且语法也不正确。

    请先检查一下你的语言语法,并练习一些基本的例子来帮助你理解java

    【讨论】:

      【解决方案2】:

      您的方法接受String 作为参数,它们不属于String 类。所以你必须这样做isValidLength(s)而不是s.isValidLength()

      此外,在 if 语句的括号内不能有多个方法调用,中间没有逻辑运算符(&amp;&amp; 代表 and|| 代表 or)。

      此外,您的hasValidDigits 不会按照您的想法执行,如果其中一个字符是数字而不是所有字符,它将返回 true。此外,关于此方法的 javadoc 注释的第一部分远非如此。当 if 语句从不计算为 true 时,它也缺少返回。

      所以你想要的是这样的:

      public Boolean isValidLength(String s) {
          return s.length == 6;
      }
      
      //this checks all characters of the string though, 
      //your javadoc said something about checking the last 5 characters..
      public Boolean hasValidDigits(String s) {
          for(int i=1; i<s.length(); i++)
              if (!Character.isDigit(s.charAt(i)))  {
                  return false;
              }
          }
          return true;
      }
      
      public Boolean isValidAccountNum(String s) {
        return isValidLength(s) && isValidStart(s) && hasValidDigits(s);
      }
      

      【讨论】:

      • 非常感谢帮助,慢慢开始更好地理解java了
      【解决方案3】:

      第一种方法可能会执行一个循环,但如果它是一个数字,它将在第一次迭代时返回,它不会检查整个字符串并且没有返回 false 例如:

      public Boolean hasValidDigits(String s) {
          for (int i = 1; i < s.length(); i++) {
              if (!Character.isDigit(s.charAt(i))) {
                  return false;
              }
          }
          return true;
      }
      

      isValidAccountNum 方法可以只返回语句,因为它已经是一个布尔表达式

      return s.isValidLength() && s.isValidStart() && s.hasValidDigits();
      

      isValidLength 方法相同,原因相同:

      return s.length()==6;
      

      【讨论】:

        猜你喜欢
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2016-10-05
        • 1970-01-01
        相关资源
        最近更新 更多