Java 如何在给定条件下返回由前2个字符组成的字符串
我偶然发现了以下问题: 给定一个字符串,返回由前2个字符组成的字符串(如果存在),但仅当第一个字符为“o”时包含第一个字符,当第二个字符为“z”时包含第二个字符,因此“ozymandias”产生“oz” 下面是我的尝试,但请考虑到我是一个乞丐Java 如何在给定条件下返回由前2个字符组成的字符串,java,Java,我偶然发现了以下问题: 给定一个字符串,返回由前2个字符组成的字符串(如果存在),但仅当第一个字符为“o”时包含第一个字符,当第二个字符为“z”时包含第二个字符,因此“ozymandias”产生“oz” 下面是我的尝试,但请考虑到我是一个乞丐 public String startOz(String str) { if(str.length()>=2 && str.substring(0,2)=="oz") return "oz"; if(str.length
public String startOz(String str) {
if(str.length()>=2 && str.substring(0,2)=="oz")
return "oz";
if(str.length()>=1 && str.substring(0,1)=="o")
return "o";
if(str.length()>=2 && str.substring(1,2)=="z")
return "z";
return "";
}
不幸的是,这段代码并没有包括所有的可能性,也许通过一个例子可以更好地理解,如果输入是:startOz(“ozk”),那么输出将不是“oz”,而是一个空格。。有办法挽救我的尝试吗?你可以检查字符的位置,看看它们是否正确。像这样
String str = ("ozymondiaz");
String returnString = ("");
if(str.length()>1 && str.charAt(0) == 'o') { returnString+=("o"); }
if(str.length()>2 && str.charAt(1) == 'z') { returnString+=("z"); }
System.out.print(returnString);)
然后把它们结合起来作为你的答案
你可以在这里检查代码
您只需检查字符的位置,看看它们是否正确。像这样
String str = ("ozymondiaz");
String returnString = ("");
if(str.length()>1 && str.charAt(0) == 'o') { returnString+=("o"); }
if(str.length()>2 && str.charAt(1) == 'z') { returnString+=("z"); }
System.out.print(returnString);)
然后把它们结合起来作为你的答案
你可以在这里检查代码
我会将问题分解为您正在执行的两个
布尔测试(第一个是至少有一个字符,第一个是o
,第二个是至少有两个字符,第二个是z
)。我会使用String.tocharray()
来简化这些字符的获取。然后可以测试这些布尔条件。像
public String startOz(String str) {
if (str != null) {
char[] arr = str.toLowerCase().toCharArray();
boolean oTest = arr.length >= 1 && arr[0] == 'o';
boolean zTest = arr.length >= 2 && arr[1] == 'z';
if (oTest && zTest) {
return "oz";
} else if (oTest) {
return "o";
} else if (zTest) {
return "z";
}
}
return "";
}
我会将问题分解为您正在执行的两个布尔测试(第一个是至少一个字符,第一个是o
,第二个是至少两个字符,第二个是z
)。我会使用String.tocharray()
来简化这些字符的获取。然后可以测试这些布尔条件。像
public String startOz(String str) {
if (str != null) {
char[] arr = str.toLowerCase().toCharArray();
boolean oTest = arr.length >= 1 && arr[0] == 'o';
boolean zTest = arr.length >= 2 && arr[1] == 'z';
if (oTest && zTest) {
return "oz";
} else if (oTest) {
return "o";
} else if (zTest) {
return "z";
}
}
return "";
}
你可以试试这个:
String result = "";
if(str != null && !str.isEmpty()){
result = (str.indexOf("o") == 0 ? "o" : "").concat(str.indexOf("z") == 1 ? "z" : "");
}
return result;
你可以试试这个:
String result = "";
if(str != null && !str.isEmpty()){
result = (str.indexOf("o") == 0 ? "o" : "").concat(str.indexOf("z") == 1 ? "z" : "");
}
return result;
公共字符串startOz(字符串str){
int len=str.length();//计算长度
if(len<1)返回新字符串(“”);
if(len>1&&str.charAt(0)='o'&&str.charAt(1)='z')返回新字符串(“oz”);//检查字符串长度是否大于2且以oz开头
if(str.charAt(0)='o')返回新字符串(“o”);//如果字符串以o开头
if(str.charAt(1)='z')返回新字符串(“z”);//如果该字符串的第二个字符为z
返回新字符串(“”;//不匹配
}
编辑:虽然上述解决方案已被接受,但只是略有改进,但如果输入str=“z”,则会出现问题,应避免出现“StringIndexOutOfBoundsException”。因此,请将第6行编辑为如果(len>=1&&str.charAt(1)='z')
,那么它将是完美的。公共字符串startOz(String str){
int len=str.length();//计算长度
if(len<1)返回新字符串(“”);
if(len>1&&str.charAt(0)='o'&&str.charAt(1)='z')返回新字符串(“oz”);//检查字符串长度是否大于2且以oz开头
if(str.charAt(0)='o')返回新字符串(“o”);//如果字符串以o开头
if(str.charAt(1)='z')返回新字符串(“z”);//如果该字符串的第二个字符为z
返回新字符串(“”;//不匹配
}
编辑:虽然上述解决方案已被接受,但只是略有改进,但如果输入str=“z”,则会出现问题,应避免出现“StringIndexOutOfBoundsException”。因此,请将第6行编辑为,如果(len>=1&&str.charAt(1)='z')
,那么它将是完美的。您可以试试这个
我对你的代码做了一些编辑,但最终还是成功了
public static String startOz(String str) {
if(str.length()>=2 && str.substring(0,2).equals("oz"))
{
return "oz";
}
else if(str.length()>=2 && str.substring(1,2).equals("z"))
{
return "z";
}
else if (str.length()>=2 && str.substring(0,1).equals("o"))
{
return "o";
}
return "";
}
你可以试试这个
我对你的代码做了一些编辑,但最终还是成功了
public static String startOz(String str) {
if(str.length()>=2 && str.substring(0,2).equals("oz"))
{
return "oz";
}
else if(str.length()>=2 && str.substring(1,2).equals("z"))
{
return "z";
}
else if (str.length()>=2 && str.substring(0,1).equals("o"))
{
return "o";
}
return "";
}
首先,不要将字符串与==
进行比较,使用.equals()
:str.substring(0,2).equals(“oz”)
哇,谢谢!它现在工作得很好。但是为什么“==”不适用于字符串?@Dahaka请给出更多的测试条件。我无法完全计算出预期的产出。请提供更多他们期望的信息output@Dahaka请阅读提议的重复问题。。它解释得很清楚detail@Dahaka代码模式是什么意思?像这个
?(如果是这样,请在要突出显示的部分前后使用`符号。`像这样',除了没有空格外)首先不要将字符串
与==
进行比较,使用.equals()
:str.substring(0,2).equals(“oz”)
哇,谢谢!它现在工作得很好。但是为什么“==”不适用于字符串?@Dahaka请给出更多的测试条件。我无法完全计算出预期的产出。请提供更多他们期望的信息output@Dahaka请阅读提议的重复问题。。它解释得很清楚detail@Dahaka代码模式是什么意思?像这个
?(如果是这样,请在要高亮显示的部分前后使用“符号”。“像这样”,除了没有空格外)这看起来很平滑。但是我不明白str和str有什么区别零和!str.empty()。其中一个还不够吗?没问题。如果str
变量未初始化或未赋值,则该变量可以为null
。str
变量也可以是空字符串,或“
”。请参见如何使用空字符串初始化结果“
”。这就是区别。我在那里检查了它们,因为它们是导致对问题的空字符串响应的条件;所以我们不必再做任何检查了。这看起来很顺利。但是我不明白str和str有什么区别零和!str.empty()。其中一个还不够吗?没问题。如果str
变量未初始化或未赋值,则该变量可以为null
。str
变量也可以是空字符串,或“
”。请参见如何使用空字符串初始化结果“
”。这就是区别。我都检查过了