Java 如果一个或多个变量小于0,如何使if语句不执行并转到else if语句?
好的,我是java新手,出于某种原因,else if只在所有3个变量都小于0时执行。如果其中一个值小于0,我如何修复它,使其显示错误消息Java 如果一个或多个变量小于0,如何使if语句不执行并转到else if语句?,java,if-statement,Java,If Statement,好的,我是java新手,出于某种原因,else if只在所有3个变量都小于0时执行。如果其中一个值小于0,我如何修复它,使其显示错误消息 import javax.swing.JOptionPane; import java.util.*; import java.text.*; public class ChristianBondurant_3_05 { public static void main (String [] args) { //Declaring all
import javax.swing.JOptionPane;
import java.util.*;
import java.text.*;
public class ChristianBondurant_3_05 {
public static void main (String [] args) {
//Declaring all needed variables at the top.
double a, b, c; //declares the sides of the triangle"
double perimeter;
double s;
double area;
StringTokenizer st;
String inputStr = new String();
DecimalFormat df = new DecimalFormat("#.0");
inputStr = JOptionPane.showInputDialog("Enter the sides of the triangle seperated by spaces: ");
st = new StringTokenizer(inputStr);
a = Double.parseDouble(st.nextToken());//Enter your A variable
b = Double.parseDouble(st.nextToken());//Enter your B variable
c = Double.parseDouble(st.nextToken());;//Enter your C variable
//Making our variables equivlent to these equations.
if (a > 0 || b > 0 || c > 0){
perimeter = a + b + c;
s = perimeter / 2;
area = Math.sqrt(s * ( s - a ) * ( s - b ) * ( s - c ));
JOptionPane.showMessageDialog(null, "The Sides of the Triangle are: " +
+ a + ", " + b + ", and " + c + "\n" +
"The Perimeter is :" + perimeter + "\n" +
"The area formatted to one decimal place: " + df.format(area) +"\n" +
"The area unformatted: " + area + "\n");
}
else if(a < 0 || b < 0 || c <0) {
JOptionPane.showMessageDialog(null,"Error! Please enter an integer.");
}
}
}
import javax.swing.JOptionPane;
导入java.util.*;
导入java.text.*;
公共课克里斯蒂安·邦杜兰特3号05{
公共静态void main(字符串[]args){
//在顶部声明所有需要的变量。
双精度a,b,c;//声明三角形的边”
双周长;
双s;
双区;
StringTokenizer st;
字符串inputStr=新字符串();
DecimalFormat df=新的DecimalFormat(#.0”);
inputStr=JOptionPane.showInputDialog(“输入以空格分隔的三角形边:”);
st=新的StringTokenizer(inputStr);
a=Double.parseDouble(st.nextToken());//输入变量
b=Double.parseDouble(st.nextToken());//输入b变量
c=Double.parseDouble(st.nextToken());;//输入c变量
//使我们的变量等价于这些方程。
如果(a>0 | | b>0 | | c>0){
周长=a+b+c;
s=周长/2;
面积=数学sqrt(s*(s-a)*(s-b)*(s-c));
showMessageDialog(null,“三角形的边是:”+
+a+、“+b+”和“+c+”\n+
周长为:“+周长+”\n+
格式化为小数点后一位的区域:“+df.格式(区域)+”\n+
未格式化的区域:“+area+”\n”);
}
否则,如果(a<0 | | b<0 | | c您有:
//Making our variables equivlent to these equations.
if (a > 0 || b > 0 || c > 0) {
这意味着:“如果a
,b
和c
中的任何一个为正”
你似乎想说:
// If a, b and c are all positive
if (a > 0 && b > 0 && c > 0) {
或者你想要的可能是:
// If a, b and c are all non-negative
if (a >= 0 && b >= 0 && c >= 0) {
然后你的else子句可以有:
// otherwise, a, b or c must be negative
else {
...
您的第一个条件在逻辑上应该是
a > 0 && b > 0 && c > 0
这里有重叠的逻辑。如果3个变量中有一个大于0,则永远不会在这里调用elseif。只有在第一个条件不满足时才会调用Else。我不确定您想做什么,但您可以做到
if(a > 0 && b > 0 && c > 0)
//codehere
else
//codehere
或者你想同时做这两件事,在这种情况下,你应该有两个不同的if语句
if(a > 0 || b > 0 || c > 0)
{
//code here
}
if(a < 0 || b < 0 || c < 0)
{
//code here
}
if(a>0 | | b>0 | | c>0)
{
//代码在这里
}
if(a<0 | | b<0 | | c<0)
{
//代码在这里
}
由于您使用| |运算符时初始if条件错误,并且即使条件为true use&&operator,条件也已满字段。那么if仅在所有编号大于0时才起作用
if (a >= 0 && b >= 0 && c >= 0) {
如果所有变量都等于0,那么这两个if块都不会运行,…只是说…其中一个可能应该与比较运算符有一个等号。还有,你真的需要一个else if吗…为什么不只是一个else…PSUEDO,如果这三个变量中的任何一个大于0,做点什么,做点其他的。最上面的一个工作得很好,谢谢!我会的一旦标记为正确,它将允许我。:)