Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果一个或多个变量小于0,如何使if语句不执行并转到else if语句?_Java_If Statement - Fatal编程技术网

Java 如果一个或多个变量小于0,如何使if语句不执行并转到else if语句?

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

好的,我是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 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,做点什么,做点其他的。最上面的一个工作得很好,谢谢!我会的一旦标记为正确,它将允许我。:)