Java 设计返回布尔值的方法
我遇到了这个问题,不知道如何解决它 完成以下方法以确定参数是否仅包含以下小写字符:d、r、m、f、s、1、t。如果是,则返回true;否则,返回false。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
如果参数为
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);
}
}