虽然循环条件似乎没有被检查
问题描述:
所以这里是我的代码,虽然根本不检查条件,但if条件工作。我没有丝毫的想法知道这是怎么回事,因为在我看来,这一切都好。虽然循环条件似乎没有被检查
import java.lang.Integer;
public class Wielomian
{
public double [] mnozniki;
public int max;
Wielomian(String ciag)
{
int tmp;
int stopien;
//int iteration=0;
int poczatek=0;
tmp=ciag.indexOf('^');
stopien=Integer.valueOf(ciag.substring(tmp+1,tmp+2));
mnozniki = new double[stopien+1];
max = stopien;
tmp=0;
for(int i=1; i< ciag.length() ; ++i)// +1.0*x^3-1.0*x^1-2.0
{
//System.out.println("some:"+i);
if(ciag.charAt(i)=='*')
{
// System.out.println("some:k");
stopien=Integer.valueOf(ciag.substring(i+3,i+4));
int iteration=i;
while(((ciag.charAt(iteration))!='-')||((ciag.charAt(iteration))!='+'))
{
// System.out.println("some2:"+iteration);
--iteration;
if (iteration<=0) break;
}
poczatek=iteration;
mnozniki[stopien]=Double.parseDouble(ciag.substring(poczatek,i-1));
}
}
}
public void wypisz()
{
int i;
for(i=0;i<max;++i)
{
System.out.println("x^" + i+":"+mnozniki[i]);
}
}
和主类:
public class lab03
{
public static void main(String args[])
{
String n ="1.0*x^3-1.0*x^1-2.0";
Wielomian wx = new Wielomian(n);
wx.wypisz();
}
}
在引擎收录: http://pastebin.com/sgpY2AuG http://pastebin.com/eqXHNk0N < - 忽略行35
答
((ciag.charAt(iteration))!='-')||((ciag.charAt(iteration))!='+'))
总是正确的,这是一个典型的错误(来自哪里“不是x或y”的混淆实际上是指“不是(x或y)”,但大多数新手编码为“(不是x)或(不是y)”,使用& &代替或把否定外OR
((ciag.charAt(iteration))!='-')&&((ciag.charAt(iteration))!='+'))
或
!((ciag.charAt(iteration))=='-')||((ciag.charAt(iteration))=='+'))
答
我认为这个问题是在这里:while(((ciag.charAt(iteration))!='-')||((ciag.charAt(iteration))!='+'))
尝试使用这个:
while(((ciag.charAt(iteration))!='-')&&((ciag.charAt(iteration))!='+'))
由于您尚未指定确切的问题,我不确定答案。但尝试检查。
答
while (A != 1 || A != 2) {
//Do Something
}
while循环只会结束,如果A == 1 && A == 2
,它永远不会是真的。
你的循环条件是后处理,所以你有错误的想法。 – 2013-03-24 15:03:26
请在发布之前剪下您的代码以仅显示相关部分。 – Keppil 2013-03-24 15:06:32
无论为什么循环不起作用,如果不知道发生了什么,您可能想要了解如何使用调试器来解决这类问题。这是非常有益的。 – andi5 2013-03-24 15:07:32