Java 如果没有字母,则返回true
这种方法是几种方法之一。我想知道我在这里说ifdig1.contains&&dig2.contains&&res.contains的行是否正确。在正则表达式中 1.我需要确保字符串中没有字母 2.我需要看看string1和string2的总和是否等于第三个字符串。否则返回false。谢谢大家的帮助。到目前为止,这就是我所拥有的Java 如果没有字母,则返回true,java,regex,Java,Regex,这种方法是几种方法之一。我想知道我在这里说ifdig1.contains&&dig2.contains&&res.contains的行是否正确。在正则表达式中 1.我需要确保字符串中没有字母 2.我需要看看string1和string2的总和是否等于第三个字符串。否则返回false。谢谢大家的帮助。到目前为止,这就是我所拥有的 /** Returns true if the puzzle is solved. @return true if the puzzle has no lette
/**
Returns true if the puzzle is solved.
@return true if the puzzle has no letters and the
first two numbers add up to the third
*/
public boolean isSolved()
{
String dig1=""+add1;
String dig2=""+add2;
String res=""+result;
//String a1=""+dig1;
if(dig1.contains("[^A-Z]") && dig2.contains("[^A-Z]") && res.contains("[^A-Z]")){
int i=Integer.parseInt(dig1);
int j=Integer.parseInt(dig2);
int k=Integer.parseInt(res);
if(i+j==k)
return true;
else
return false;
}
else
return false;
}您可以使用try-catch语句:
try {
int i=Integer.parseInt(dig1);
int j=Integer.parseInt(dig2);
int k=Integer.parseInt(res);
if(i+j==k)
return true;
else
return false;
}
} catch (NumberFormatException numForEx) {
return false;
}
您可以使用try-catch语句:
try {
int i=Integer.parseInt(dig1);
int j=Integer.parseInt(dig2);
int k=Integer.parseInt(res);
if(i+j==k)
return true;
else
return false;
}
} catch (NumberFormatException numForEx) {
return false;
}
为什么要使用正则表达式呢?如果无法进行转换,Integer.parseInt将引发异常。只要捕捉到异常,您就知道字符串包含的不是数字。大致是这样的:
public boolean isSolved() {
try {
int i = Integer.parseInt(dig1);
int j = Integer.parseInt(dig2);
int k = Integer.parseInt(res);
return (i+j) == k;
}
catch (NumberFormatException e) {
return false;
}
}
为什么要使用正则表达式呢?如果无法进行转换,Integer.parseInt将引发异常。只要捕捉到异常,您就知道字符串包含的不是数字。大致是这样的:
public boolean isSolved() {
try {
int i = Integer.parseInt(dig1);
int j = Integer.parseInt(dig2);
int k = Integer.parseInt(res);
return (i+j) == k;
}
catch (NumberFormatException e) {
return false;
}
}
不,这是一种将字符串转换为整数的复杂方法。如果这就是你要问的
public boolean isSolved()
{
String dig1=""+add1;
String dig2=""+add2;
String res=""+result;
try{
int i=Integer.parseInt(dig1);
int j=Integer.parseInt(dig2);
int k=Integer.parseInt(res);
if((i+j)==k) return true;
return false;
} catch {
return false;
}
}
所以,基本上,你可以把它包装在一个try/catch块中,
然后,您不必事先使用正则表达式检查字符串
我在这里添加了我的addtl注释:如果您打算到处使用它,请将其重构为一个方法:
private boolean IsOnlyNumbers( String input ){
try{
Integer.parseInt(input);
return true;
} catch {
return false;
}
}
或者,由于您需要号码,您可以这样做:
private int GetNumber( String input ){
try{
return Integer.parseInt(input);
} catch {
return -1;
}
}
然后检查:
var dig1 = GetNumber(add1);
var dig2 = GetNumber(add2);
var res = GetNumber(add2);
if( dig1 > 0 && dig2 > 0 && dig3 > 0 ) return dig1+dig2 == res;
不,这是一种将字符串转换为整数的复杂方法。如果这就是你要问的
public boolean isSolved()
{
String dig1=""+add1;
String dig2=""+add2;
String res=""+result;
try{
int i=Integer.parseInt(dig1);
int j=Integer.parseInt(dig2);
int k=Integer.parseInt(res);
if((i+j)==k) return true;
return false;
} catch {
return false;
}
}
所以,基本上,你可以把它包装在一个try/catch块中,
然后,您不必事先使用正则表达式检查字符串
我在这里添加了我的addtl注释:如果您打算到处使用它,请将其重构为一个方法:
private boolean IsOnlyNumbers( String input ){
try{
Integer.parseInt(input);
return true;
} catch {
return false;
}
}
或者,由于您需要号码,您可以这样做:
private int GetNumber( String input ){
try{
return Integer.parseInt(input);
} catch {
return -1;
}
}
然后检查:
var dig1 = GetNumber(add1);
var dig2 = GetNumber(add2);
var res = GetNumber(add2);
if( dig1 > 0 && dig2 > 0 && dig3 > 0 ) return dig1+dig2 == res;
我推荐这个解决方案
public boolean isSolved() {
try {
int dig1 = Integer.parseInt(add1);
int dig2 = Integer.parseInt(add2);
int res = Integer.parseInt(result);
return dig1 + dig2 == res;
} catch (NumberFormatException ex) {
return false;
}
}
如果所有字符串都是数字,则转换是正确的,您可以比较这些数字。在的上包含字母或其他错误字符的情况下,将引发异常并返回false。我建议使用此解决方案
public boolean isSolved() {
try {
int dig1 = Integer.parseInt(add1);
int dig2 = Integer.parseInt(add2);
int res = Integer.parseInt(result);
return dig1 + dig2 == res;
} catch (NumberFormatException ex) {
return false;
}
}
如果所有字符串都是数字,则转换是正确的,您可以比较这些数字。若在的上包含字母或其他错误字符,将抛出异常并返回false。我建议您使用另一个正则表达式。它将检查字符串是否仅包含数字:
if (dig1.matches("^[0-9]*$")
&& dig2.matches("^[0-9]*$")
&& res.matches("^[0-9]*$"))
使用当前代码,在许多情况下都会出现异常,例如,当有小写字母时。我建议您使用另一个正则表达式。它将检查字符串是否仅包含数字:
if (dig1.matches("^[0-9]*$")
&& dig2.matches("^[0-9]*$")
&& res.matches("^[0-9]*$"))
使用当前代码,在许多情况下都会出现异常,例如,当有小写字母时。如果字符串包含除数字和字母以外的其他符号,该怎么办?您将获得NumberFormatException。不,它完全是数字和字母。输入如下:add1=SJF3G add2=SDFH3 result=3SH4H。没有符号或其他任何东西。谢谢你的帮助。还有一件事。我注意到您倾向于这样做:stringdig1=+add1;。如果您想连接字符串,只需执行stringdig1+=add1;或者,如果要将一个字符串分配给另一个字符串,请执行此字符串dig1=add1;若字符串包含除数字和字母以外的其他符号,会怎么样?您将获得NumberFormatException。不,它完全是数字和字母。输入如下:add1=SJF3G add2=SDFH3 result=3SH4H。没有符号或其他任何东西。谢谢你的帮助。还有一件事。我注意到您倾向于这样做:stringdig1=+add1;。如果您想连接字符串,只需执行stringdig1+=add1;或者,如果要将一个字符串分配给另一个字符串,请执行此字符串dig1=add1;谢谢你Jon我感谢你的帮助谢谢Jon我感谢你的帮助谢谢mindandmedia的帮助。我感谢你的帮助,非常欢迎。既然你很有礼貌,这里还有另一个建议:将整个过程变成一个函数:私有布尔containsNoLetters字符串输入{try{Integer.parseIntinput;return true;}catch{return false};然后你可以重复使用它…感谢mindandmedia的帮助。我感谢你的帮助,非常欢迎。既然你很有礼貌,这里还有另一个建议:将整个过程变成一个函数:私有布尔containsNoLetters字符串输入{try{Integer.parseIntinput;return true;}catch{return false};然后你可以重新使用它…谢谢你托马斯先生的帮助。谢谢你托马斯先生的帮助。非常感谢你的帮助。我很感激。非常感谢你的帮助。我很感激。谢谢你的帮助,斯特兰捷夫先生。谢谢你的帮助。谢谢你的帮助,斯特兰捷夫先生。谢谢你的帮助。