Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设计返回布尔值的方法_Java_Function_Methods - Fatal编程技术网

Java 设计返回布尔值的方法

Java 设计返回布尔值的方法,java,function,methods,Java,Function,Methods,我遇到了这个问题,不知道如何解决它 完成以下方法以确定参数是否仅包含以下小写字符:d、r、m、f、s、1、t。如果是,则返回true;否则,返回false。 如果参数为null或为空字符串,也返回true public boolean isSonqStrinq(Strinq s){ 我尝试了以下方法,但失败了: public boolean isSongString (String s){ int i = 1; int j = 1; char a = s.charAt

我遇到了这个问题,不知道如何解决它

完成以下方法以确定参数是否仅包含以下小写字符:d、r、m、f、s、1、t。如果是,则返回true;否则,返回false。
如果参数为
null
或为空字符串,也返回
true

public boolean isSonqStrinq(Strinq s){ 
我尝试了以下方法,但失败了:

public boolean isSongString (String s){
    int i = 1;
    int j = 1;
    char a = s.charAt(i);
    while (i < s.length()){
    {
        if(a == 'd' | a == 'r' | a == 'm' | a == 'f' | a == 's' | a == 'l' | a == 't')
            j++;
        else
            break;
    }
    i++;
    }
    if (j == s.length())
        return true;
    else
        return false;
}
公共布尔值isSongString(字符串s){
int i=1;
int j=1;
char a=s.charAt(i);
而(i

谁能告诉我哪里出错了吗?

每次比较第一个字符时,需要移动
chara=s.charAt(I)在while循环中

此外,您可以在此处使用for循环,删除j计数器,并缩短return语句,如下所示:

public boolean isSongString (String s){
    if(s == null) return true;

    char[] allowedChars = new char[] {'d','r','m','f','s','l','t'};

    for(int i=0; i < s.length(); i++) {
        if(Arrays.asList(allowedChars).contains(s.charAt(i)))
            continue;
        else
            return false;
    }
    return true;
}

应将i初始化为0,将a初始化为“”,并在中初始化,而第一条语句应为

a = s.charAt(i)

这应该行得通。如果没有,你可以回复。

因为这是一个练习,我认为最好只提供一些好的线索。发现的乐趣胜过一个全面的扰流板

  • while(i
    中,条件始终为真,并且
    while
    循环将永远运行
  • char a=s.charAt(i)
    仅执行一次,并且在整个程序执行期间仅包含字符串的第二个字符
  • 为什么如果练习中说“如果参数为null或为空字符串,也返回true”,那么您不尝试在做其他事情之前先做第一件事吗?这是在10秒内完成的代码的50%
  • 验证字符串最容易使用。有一种特别有趣的方法可以做到这一点。剧透警报:
    “^[drmfslt]*$”
    -不,这不是我用另一种语言骂你:-D
  • 公共布尔值isSongString(字符串s){
    int i=0;
    int j=0;
    而(i
    试试这个:

    import java.io.*;
    public class StringTest {
    
    static boolean test(String n){
        int l=n.length();
        for(int i=0;i<l;i++)
            if(n.charAt(i)!='d'&&n.charAt(i)!='r'&&n.charAt(i)!='m'&&n.charAt(i)!='f'&&n.charAt(i)!='s'&&n.charAt(i)!='1'&&n.charAt(i)!='t'&&n.charAt(i)!=' ')
                return false;
    
        return true;
    }
    public static void main(String args[])throws IOException{
        boolean n=test("RAHUL");
        System.out.println(n);
        n=test("drmfs1t");
        System.out.println(n);
        n=test(" ");
        System.out.println(n);
        n=test("");
        System.out.println(n);
    }
    }
    
    import java.io.*;
    公共类字符串测试{
    静态布尔测试(字符串n){
    int l=n.长度();
    
    对于(int i=0;如果
    s==null
    ,它将崩溃。OP声明如果
    s==null
    :-)它将返回true,并且您的代码将不会编译:-)
    char[]allowedChars=new char[]{d',r',m',f',s',l',t};
    应该修复它。@ChristofferPasser:o现在修复了!您得到了!-
    (s.length==0)
    最好简单地编写为。甚至不需要检查是否为空,您的正则表达式会在空字符串上返回true。您不希望每次循环迭代都调用charAt 8,这将大大降低速度
    public boolean isSongString (String s){
        int i = 0;
        int j = 0;
    
        while (i < s.length()-1){
    
            char a = s.charAt(i);
            if(a == 'd' | a == 'r' | a == 'm' | a == 'f' | a == 's' | a == 'l' | a == 't')
                j++;
            else
                break;
    
        i++;
        }
        if (j == s.length())
            return true;
        else
            return false;
    }
    
    import java.io.*;
    public class StringTest {
    
    static boolean test(String n){
        int l=n.length();
        for(int i=0;i<l;i++)
            if(n.charAt(i)!='d'&&n.charAt(i)!='r'&&n.charAt(i)!='m'&&n.charAt(i)!='f'&&n.charAt(i)!='s'&&n.charAt(i)!='1'&&n.charAt(i)!='t'&&n.charAt(i)!=' ')
                return false;
    
        return true;
    }
    public static void main(String args[])throws IOException{
        boolean n=test("RAHUL");
        System.out.println(n);
        n=test("drmfs1t");
        System.out.println(n);
        n=test(" ");
        System.out.println(n);
        n=test("");
        System.out.println(n);
    }
    }