如何制作多个if语句

时间:2016-08-22 08:55:05

标签: java if-statement processing

我正在使用java模式进行处理,如果我按照这样的正常方式制作条件,我想制作超过32个

If (-------- == --------){//dosomething}

Else If (-------- == --------){//dosomething}

Else If (-------- == --------){//dosomething}

Else If (-------- == --------){//dosomething}

Else If (-------- == --------){//dosomething}

Else {//dosomething}

但只有第一个条件有效,其余条件不起作用 有时它会给我错误“Eof”

我也试过这种风格

If (-------- == --------){//dosomething}

Else {//dosomething} 

If (-------- == --------){//dosomething}
Else {//dosomething} 


If (-------- == --------){//dosomething}
Else {//dosomething} 

它也不适用于第一个条件有效

请注意,有一次gui没有显示按钮或标签

我怎么能回答这个如果条件

我怎么写多少

这是一个例子,y1和y的值来自其他设备并且在我按下硬件按钮时改变1和0这个代码不完整但只有概念,而且从y1到y20和从x1到x20只有第一个有效的条件,我用它来尝试所有的矩形

这是问题的更新 完整的代码

**在这段代码中我使用了17个按钮,如果按下它们就读取它们,矩形颜色将是黑色,如果没有按下,矩形将是白色,它效果很好,但仅适用于9个输入但是其余的17个没有用,请注意我检查了所有输入和所有连接,它们运行良好所以我怎么能解决这个问题

import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
int x1 = 255;
int x2 = 255;
int x3 = 255;
int x4 = 255;
int x5 = 255;
int x6 = 255;
int x7 = 255;
int x8 = 255;
int x9 = 255;
int x10 = 255;
int x11= 255;
int x12 = 255;

void setup()
{
  size(780, 600);

  //println(Arduino.list());

  arduino = new Arduino(this, Arduino.list()[0], 57600);

    arduino.pinMode(13, Arduino.INPUT);
    arduino.pinMode(12, Arduino.INPUT);
    arduino.pinMode(11, Arduino.INPUT);
    arduino.pinMode(10, Arduino.INPUT);
    arduino.pinMode(9, Arduino.INPUT);
    arduino.pinMode(8, Arduino.INPUT);
    arduino.pinMode(7, Arduino.INPUT);
    arduino.pinMode(6, Arduino.INPUT);
    arduino.pinMode(5, Arduino.INPUT);
    arduino.pinMode(4, Arduino.INPUT);
    arduino.pinMode(3, Arduino.INPUT);
    arduino.pinMode(2, Arduino.INPUT);

}


void draw()

{ 

  roundRect(10, 10, 150, 90, x1);
  roundRect(180, 10, 150, 90, x2);
  roundRect(350, 10, 150, 90, x3);
  roundRect(520, 10, 150, 90, x4);

  roundRect(10, 120, 150, 90, x5);
  roundRect(180, 120, 150, 90, x6);
  roundRect(350, 120, 150, 90, x7);
  roundRect(520, 120, 150, 90, x8);

  roundRect(10, 230, 150, 90, x9);
  roundRect(180, 230, 150, 90, x10);
  roundRect(350, 230, 150, 90, x11);
  roundRect(520, 230, 150, 90, x12);


  ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(13) == Arduino.HIGH ) {
    x1=0;
  }                                                                                                       
  else if (arduino.digitalRead(13) == Arduino.LOW) {
    x1=255;
  }
  /////////////////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(12) == Arduino.HIGH ) {
    x2=0;
  }
  else if (arduino.digitalRead(12) == Arduino.LOW) {
    x2=255;
  }
  /////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(11) == Arduino.HIGH ) {
    x3=0;
  }
  else if (arduino.digitalRead(11) == Arduino.LOW) {
    x3=255;
  }
  ///////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(10) == Arduino.HIGH ) {
    x4=0;
  }                                                                                                         
  else if (arduino.digitalRead(10) == Arduino.LOW) {
    x4=255;
  }
  ///////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(9) == Arduino.HIGH ) {
    x5=0;
  }
  else if (arduino.digitalRead(9) == Arduino.LOW) {
    x5=255;
  }
  //////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(8) == Arduino.HIGH ) {
    x6=0;
  }
  else if (arduino.digitalRead(8) == Arduino.LOW) {
    x6=255;
  }
  ///////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(7) == Arduino.HIGH ) {
    x7=0;
  }
  else if (arduino.digitalRead(7) == Arduino.LOW) {
    x7=255;
  }
  ////////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(6) == Arduino.HIGH ) {
    x8=0;
  }
  else if (arduino.digitalRead(6) == Arduino.LOW) {
    x8=255;
  }
  /////////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(5) == Arduino.HIGH ) {
    x9=0;
  }
  else if (arduino.digitalRead(5) == Arduino.LOW) {
    x9=255;
  }

  ////////////////////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(4) == Arduino.HIGH ) {
    x10=0;
  }
  else if (arduino.digitalRead(4) == Arduino.LOW) {
    x10=255;
  }
  ///////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(3) == Arduino.HIGH ) {
    x11=0;
  }
  else if (arduino.digitalRead(3) == Arduino.LOW) {
    x11=255;
  }
  //////////////////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////

  if (arduino.digitalRead(2) == Arduino.HIGH ) {
    x12=0;
  }
  else if (arduino.digitalRead(2) == Arduino.HIGH) {
    x12=255;
  }
  //////////////////////////////////////////////////////////////
}

void roundRect(float x, float y, float w, float h, float f) {

    float corner = w/10.0;
    float midDisp = w/20.0;

    fill(f);

    beginShape();  

    curveVertex(x+corner, y);
    curveVertex(x+w-corner, y);
    curveVertex(x+w+midDisp, y+h/2.0);

    curveVertex(x+w-corner, y+h);
    curveVertex(x+corner, y+h);
    curveVertex(x-midDisp, y+h/2.0);

    curveVertex(x+corner, y);
    curveVertex(x+w-corner, y);
    curveVertex(x+w+midDisp, y+h/2.0);

    endShape();

  } 

enter image description here

3 个答案:

答案 0 :(得分:10)

写作时

if (-------- == --------){//dosomething};

这是整个声明。 ;表示您无法在其后面放置else

相反,你应该写

if (-------- == --------) {
    //dosomething
} else if (-------- == --------) {
    //dosomething else
}

如果第一个条件是唯一被调用的条件,则表示它始终为真。

BTW如果你有这些链的长链,很可能有更好的方法来做这个,例如使用switch或多态,这取决于你想要做什么。

答案 1 :(得分:2)

简短回答:你不这样做。

答案很长:if / else的冗长链条与优秀的OO设计相反!你不要问某些状态的对象;然后在其他一些东西上做出改变。

相反,你应该使用多态。

示例:

abstract class Whatever {
  void doSomething();
// ... probably other methods as well

和各种具体的子类,如

class SpecificWhatever extends Whatever {
  @Override void doSomething() { // ...

最后,你有

class WhateverFactory {
  Whatever createFrom(...) {
  // here you might actually need a switch or if/else 

这里的要点是:你尽量避免使用if / else / switch编码风格。它为您的代码添加了很多的复杂性,这使得维护代码库变得更加困难(因为它会在您的类中引起如此多的耦合)。

而且,只是为了更直接地暗示你的问题;我喜欢的一种模式是:

if (whatever) {
  doSomething();
  return;
}

if (somethinElse) {
  doSomethingElse();
  return;
}

如果你的方法应该返回一个值,那真的很方便;你可以将两行减少为一行:

return doSomething();

是的,这违反了旧的“单入单退出”范式;但我认为它会使得if / elses链(那些你无法避免的)更容易阅读。

鉴于您的意见,我想知道您是否无法使用一个或多个Map<Integer, Integer>个对象。所以,你问地图一些Y输入的X值应该是什么(如果这些数字实际上是常数文字)。

答案 2 :(得分:1)

其他问题告诉你在if声明(你说你没说过)之后避免使用分号或改变你的设计(这并没有真正回答你的问题)。这些答案不是错误,但它们也没有真正解决您的基本问题。

听起来你只是对if else-if else链的基本语法感到困惑。

以下是基本语法:

if(x > 75){
   println("A");
}
else if(x > 50){
   println("B");
}
else{
   println("C");
}

请注意,Java(以及因此处理)区分大小写,因此ifelse ifelse都是小写

确保计算开始和结束花括号也很重要。如果它们不完全匹配,那么你将得到你正在谈论的错误。以下是错误代码的示例:

if(x > 75){
   println("A");
else if(x > 50){
   println("B");
}

您也可以一个接一个地放置不相关的if语句。它们的语法就像这样:

if(x > 75){
   println("A");
}
else if(x > 50){
   println("B");
}
else{
   println("C");
}

if(y < 1){
   println("D");
}
else if(y < 2){
   println("E");
}
else{
   println("F");
}

你可以变得更复杂并做一些事情,例如将if语句放在另一个if语句中,但这听起来不像你在这里尝试做的那样。