java刚入门,对其他的编程语言都不了解。
对编程语言不够熟悉,也无法精确表述是什么问题。
或许我表述的问题,已经被研究讨论过了,很少存在需要这样考虑逻辑,无伤大雅;或许应经被java或其他语言解决了,我还不知道;或许大部分人都知道怎么更好的解决了。如是这样,请点隐藏或新手,走人或更好的做法是告诉我和其他不明事实真相的群众该怎么做。
大家有没有这样同感,当有几个独立的逻辑,交叉一起判断的时候,逻辑分支的编写会变得很冗余。
不标准的伪代码,a、b、c在那些数字的取值范围内(就考虑0,1,2吧):
int a in(0,1,2...);
int b in(0,1,2...);
int c in(0,1,2...);
写逻辑的时候你会这样写:
if(a==0){
if(b==0){
if(c=0=){
...
}else if(c==1){
...
}else{
...
}
}else if(b==1){
if(c==0){
...
}else if(c==1){
...
}else{
...
}
}else{
if(c==0){
...
}else if(c==1){
...
}else{
...
}
}
}else if(a==1){
if(b==0){
if(c==0){
...
}else if(c==1){
...
}else{
...
}
}... ...
}else{
... ...
}
或者
if(a==0&&b==0&&c==0){
...
}else if(a==0&&b==0&&c==1){
...
}else if(a==0&&b==0&&c==2){
...
}else if(a==0&&b==1&&c==0){
...
}else if(a==0&&b==1&&c==1){
...
}else if(a==0&&b==1&&c==2){
...
}... ...
抛石子引玉:
定义这样几个布尔数组,保证有且仅有一个是true,对它们迭代(或者是什么):
int a in(0,1,2...);
int b in(0,1,2...);
int c in(0,1,2...);
boolean baa={a==0,a==1,a==2};
boolean bab={b==0,b==1,b==2};
boolean bac={c==0,c==1,c==2};
有那么一种强大的itr迭代(迭代数组,却没有共同的循环结构,只是实现分支,或叫分支更合适),有我幻想的结构。
itr(baa,bab,bac){
...; //if(baa[0]&&bab[0]&&bac[0])
...; //if(baa[0]&&bab[0]&&bac[1])
...; //if(baa[0]&&bab[0]&&bac[2])
...; //if(baa[0]&&bab[1]&&bac[0])
...; //if(baa[0]&&bab[1]&&bac[1])
...; //if(baa[0]&&bab[1]&&bac[2])
... ...
}
迭代达到注释中判断的效果,“...;”可以是个处理语句,或者一个“{}”包裹起来的语句块。
这么做是不是更简洁?虽然可能写着写着漏掉或弄混逻辑。
独立的逻辑还好想,稍微有点交叉的逻辑限于自己的启蒙程度还无法想象。
-----------------------------------我从来不掩饰自己的无知
分享到:
相关推荐
总的来说,通过理解和熟练运用Python的单双分支结构,我们可以实现逻辑判断,控制程序的流程,解决实际问题,如猜拳游戏中的胜负判断和用户登录验证。这些基本结构是编程中的基础,对于编写任何复杂的程序都至关重要...
### 数据结构中的模板与迭代器 #### 模板基础 在C++中,**模板**是一种强大的工具,它允许程序员编写泛化的代码——代码不是针对一个具体的类型,而是对一组类型进行操作。模板分为**函数模板**和**类模板**。 - ...
- **注意break和continue的使用**:在switch或循环结构中,合理使用break可以提前结束当前块的执行,continue则跳过当前迭代继续下一次循环。 - **逻辑运算符的运用**:了解并熟练使用逻辑与(&&)、逻辑或(||)以及...
理解条件表达式的真值判断和短路逻辑是掌握分支结构的关键。 循环结构在处理重复任务时非常有用,C语言中的循环有while、for和do-while三种形式。while循环基于一个条件来决定是否继续执行;for循环常用于已知循环...
3. **循环结构**:为了实现迭代,我们需要一个循环结构(如`For Iterator`或`While` blocks),在每个迭代周期内,系统运行并更新控制器参数。 4. **反馈机制**:ILC依赖于误差反馈,因此需要在系统模型和控制器...
雅可比迭代法基于将系数矩阵A分解为对角部分D、上三角部分U和下三角部分L,即A=D+U+L。在每次迭代中,新解向量x的第j个分量由当前解向量P的前j-1个分量和后j+1个分量以及对角线元素计算得出。迭代公式如下: \[ x_j...
Logistic迭代算法是一种常用于解决非线性方程组,特别是单变量的迭代方法,它在数学、统计学和计算机...通过对源代码的研究,我们可以更深入地了解Logistic映射的动态行为,并掌握如何在Matlab中编写类似的迭代算法。
迭代学习的核心思想是通过多次迭代,每次根据上一次的表现对控制策略进行微调。在MATLAB环境中,这种学习过程通常涉及编写循环结构,计算误差,并依据误差调整控制器参数。MATLAB作为一种强大的数值计算工具,拥有...
接着,高斯迭代(Gauss-Seidel Iteration)是对雅克比迭代的改进,它在每次迭代中立即用新值替换旧值,即在计算下一行元素时使用当前行的新值,这使得高斯迭代通常比雅克比迭代更快收敛。迭代公式为x^(k+1)i = (1/di...
在信息技术教育领域,高职“数据结构”课程是培养学生程序设计能力、加深对算法和数据结构理解的重要课程。传统的教学方式往往侧重于理论知识的讲解和简单实例的演示,而与实际工程项目的需求存在较大差距。为了缩短...
在机械工程领域,特别是在结构动力学分析中,"juzhendiedai_迭代矩阵振型_vibration_机械振动_矩阵迭代_迭代模态法_"这个主题涉及到的是一个关键的技术——迭代模态法,用于计算结构的固有频率和振型。这是一种用于...
高斯-赛德尔迭代法通常比雅可比迭代法收敛更快,尤其是在矩阵接近对角主导的情况下。 C语言实现这两种迭代法时,首先需要处理矩阵和向量的数据结构,通常使用二维数组来表示矩阵,一维数组表示向量。接着,编写迭代...
在"IteratorPatternDemo"这个例子中,我们可以预期看到一个具体的迭代器实现,它可能包含了对某种数据结构(如数组、链表或树)的遍历逻辑。此外,还会有聚合对象的接口,以及至少一个实现了该接口的具体聚合类。...
3. **具体迭代器实现**:根据聚合对象的内部结构实现迭代逻辑,可能使用了链表、数组或其他数据结构。 4. **具体聚合对象实现**:实现聚合对象接口,提供内部数据结构和创建具体迭代器的方法。 迭代器模式的优势...
在数值计算领域,牛顿迭代法、对分法、雅可比迭代和高斯赛德尔迭代是四种常用且重要的算法,它们主要用于解决不同类型的数学问题。以下是对这些方法的详细阐述: 1. 牛顿迭代法(Newton's Iteration Method): ...
matlab 迭代学习控制 并联结构(反馈+ilc)
迭代画图是一种基于数学算法的艺术表现形式,它利用迭代的过程,通过不断对图像进行精细的细分,创造出复杂的视觉效果。这种技术通常与计算机图形学、几何构造和算法艺术相关联。在“迭代画图_迭代、中点、简单到...
- **遍历的统一**:无论聚合对象的内部结构如何,都可以通过迭代器进行遍历。 - **灵活性**:迭代器模式使得增加新的聚合类和迭代器类变得容易,无需修改原有代码。 - **安全访问**:迭代器通常不允许修改聚合...
4. 实现具体迭代器,根据聚合对象的结构定义遍历逻辑,实现`hasNext()`和`next()`方法。 迭代器模式的优点: 1. 支持以不同的方式遍历一个聚合对象。 2. 迭代器简化了聚合类。 3. 在同一个聚合上可以有多个遍历。 4...
- 错误检查:添加逻辑来检测是否达到最大迭代次数或误差阈值。 - 输入/输出:提供接口读取输入矩阵和向量,以及输出最终解。 在提供的压缩包"超松弛迭代法2"中,可能包含了实现这些功能的C++源代码文件。通过阅读和...