我正在使用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();
}
答案 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(以及因此处理)区分大小写,因此if
,else if
和else
都是小写。
确保计算开始和结束花括号也很重要。如果它们不完全匹配,那么你将得到你正在谈论的错误。以下是错误代码的示例:
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
语句中,但这听起来不像你在这里尝试做的那样。