介绍Java Fencepost/While循环测试
我整晚都在试着回答这个问题,但我觉得我的大脑在期中考试中太紧张了,无法正确回答这个问题。所以问题就是[引用]: 编写一个方法highLow,该方法接受整数作为参数,并返回数字是否具有交替的“高”和“低”数字。0到4是“低”数字,5到9是“高”数字。如果传递的数字在“高”和“低”数字之间交替,则方法应返回true,否则返回false。您可以假定传递的数字为正数。如果传递的数字由单个数字组成,则方法应返回true 注意:如果数字以“高”数字开头或以“低”数字开头,则该方法返回true。重要的是数字要交替。例如,highLow(9292)和highLow(2929)都应该返回true 以下是对该方法的一些示例调用及其结果返回值: 返回的调用值 highLow(1918193)真实 highLow(7283)正确 高-低(3827)真 高低(9388)错误 高低(895151)错误 高-低(707)真 高-低(44)假 高低(45)真 高低(5)真 您不能使用字符串来解决此问题 这是我最近的一次尝试:介绍Java Fencepost/While循环测试,java,while-loop,conditional-statements,fencepost,Java,While Loop,Conditional Statements,Fencepost,我整晚都在试着回答这个问题,但我觉得我的大脑在期中考试中太紧张了,无法正确回答这个问题。所以问题就是[引用]: 编写一个方法highLow,该方法接受整数作为参数,并返回数字是否具有交替的“高”和“低”数字。0到4是“低”数字,5到9是“高”数字。如果传递的数字在“高”和“低”数字之间交替,则方法应返回true,否则返回false。您可以假定传递的数字为正数。如果传递的数字由单个数字组成,则方法应返回true 注意:如果数字以“高”数字开头或以“低”数字开头,则该方法返回true。重要的是数字要
public class Practeese {
public static void main(String[] args) {
highLow(1918193);
highLow(7283);
highLow(3827);;
highLow(9388);
highLow(895151);
highLow(707);
highLow(44);
highLow(45);
highLow(5);
}
public static boolean highLow(int n) {
// boolean isHigh = true;
// boolean isLow = true;
boolean test = true;
while (n > 0) {
boolean isHigh = true;
boolean isLow = true;
if (n % 10 >= 5) {
isHigh = true;
} else if (n%10<=5) {
isLow = true;
} else {
return false;
}
n = n / 10;
if (n % 10 == 0 && (isLow!= isHigh)) {
test = true;
} else {
test = false;
}
}
return test;
}
}
公共类实践{
公共静态void main(字符串[]args){
highLow(1918193);
高-低(7283);
高-低(3827);;;
高-低(9388);
高-低(895151);
高-低(707);
高-低(44);
高低(45);
高低(5);
}
公共静态布尔值高低(整数n){
//布尔值isHigh=true;
//布尔值isLow=true;
布尔检验=真;
而(n>0){
布尔值isHigh=true;
布尔值isLow=true;
如果(n%10>=5){
isHigh=正确;
}否则如果(n%10您只需要达到false一次,然后您就可以返回-因为其他数字无关紧要。您还需要检查结果是否为true-与前面的数字相比。因此您可以这样做:
public static boolean highLow(int n) {
boolean isLastHigh= n % 10 >= 5 ; //First number check - we don't compare it to anything
n=n/10;
// Start checking the next numbers and see if they are high-low-high-low
// if the condition is not met - return false and stop checking. Otherwise keep going
while (n > 0) {
if (n % 10 >= 5) {
if(isLastHigh)
return false; //Two highs in a row
isLastHigh = true;
} else {
if(!isLastHigh)
return false; //Two lows in a row
isLastHigh = false;
}
n = n / 10;
}
return true; //We never returned false so all numbers until now have been high-low-high and the result is true
}
这对我有用
public class Practeese {
public static void main(String[] args) {
System.out.println(highLow(1918193));
System.out.println(highLow(7283));
System.out.println(highLow(3827));
System.out.println(highLow(9388));
System.out.println(highLow(895151));
System.out.println(highLow(707));
System.out.println(highLow(44));
System.out.println(highLow(45));
System.out.println(highLow(5));
}
public static boolean highLow(int n) {
boolean high = false;
boolean low = false;
while (n > 0) {
if(n % 10 >= 5) {
if(high) {
return false;
} else {
low = false;
high = true;
}
} else {
if(low) {
return false;
} else {
high = false;
low = true;
}
}
n = n / 10;
}
return true;
}
}
输出:
真的
真的
真的
假的
假的
真的
假的
真的
真的谢谢!这是一个很实用的期中问题,结果真的很简单;至少比那容易。我试着投赞成票,但我还没有这些特权。