War*_*una 1 java infinite-loop
你好这是我的第一个溢出的消息(对不起,如果问题太长),我也是初级的java和英语.
我最近读了一个心灵游戏.问题是这样的:有四个女人,他们的名字:kirmizi - yesil -sari -mavi(这些是土耳其语中的颜色名称)每个女人都穿着这些颜色的裙子.例如;
mavi女人穿着纱丽裙
但有两个规则:
女士的裙子颜色都不应该与她们的名字相同
他们的名字和裙子的长度也不能相等.例如,mavi女人不能穿纱丽裙.但她可以穿kirmizi和yesil.
你能找到每个女人的裙子颜色吗?
我试图解决它,但它进入无限循环
颜色= renk名称= isim土耳其语:)
编辑:我刚发现了新的线索.小姐kirmizi和纱丽不能穿mavi和yesil裙子.他们的裙子也是不同的颜色.如果你愿意,我可以写出答案,但我相信这对像我这样的初学者来说是一个很好的问题:)
package ana;
class Ana {
static boolean birtobir=false;
static boolean ikitoiki=false;
static boolean uctouc=false;
static boolean dorttodort=false;
String renk;
String isim;
public static void main(String[] args) {
String[] isimler={"bir","iki","uc","dort"};
String[] renkler={"kirmizi","sari","yesil","mavi"};
Ana bir = new Ana();
bir.isim = "kirmizi";
bir.renk="kirmizi";
Ana iki = new Ana();
iki.isim = "sari";
iki.renk="sari";
Ana uc = new Ana();
uc.isim = "yesil";
uc.renk="yesil";
Ana dort = new Ana();
dort.isim = "mavi";
dort.renk="mavi";
while ( birtobir=true && bir.renk.matches(bir.isim))
while( ikitoiki=true && iki.renk.matches(iki.isim) )
while( uctouc=true && uc.renk.matches(uc.isim) )
while( dorttodort=true && dort.renk.matches(dort.isim)) {
for (int a=0;a<renkler.length;a++) {
bir.renk=renkler[a];
if(bir.renk.length()==bir.isim.length()) {
boolean birtobir=true;
}
for (int b=0;b<renkler.length;b++) {
iki.renk=renkler[b];
if(iki.renk.length()==iki.isim.length()) {
boolean ikitoiki=true;
}
for (int c=0;c<renkler.length;c++) {
uc.renk=renkler[c];
if(uc.renk.length()==uc.isim.length()) {
boolean uctouc=true;
for (int d=0;d<renkler.length;d++) {
dort.renk=renkler[d];
}
if(dort.renk.length()==dort.isim.length()){
boolean dorttodort=true;
}
}
}
}
}
}
System.out.println(bir.isim+"="+bir.renk);
System.out.println(iki.isim+"="+iki.renk);
System.out.println(uc.isim+"="+uc.renk);
System.out.println(dort.isim+"="+dort.renk);
}
}
Run Code Online (Sandbox Code Playgroud)
这只是一个猜测,但在这里:
while ( birtobir=true && bir.renk.matches(bir.isim))
while( ikitoiki=true && iki.renk.matches(iki.isim) )
while( uctouc=true && uc.renk.matches(uc.isim) )
while( dorttodort=true && dort.renk.matches(dort.isim)){
Run Code Online (Sandbox Code Playgroud)
你最想要的是:birtobir==true && .. ikitoiki==true && ... uctouc==true && ... dorttodort==true[使用operator ==而不是operator = ]
birtobir=true将birtobir设置为true,同时birtobir==true检查变量是否为true.
关于java中运算符的更多细节
如果它不是一个bug,你实际上想要设置变量 - 它是一个糟糕的样式,你应该重构你的代码.
编辑: 我还能注意到的另一件事:
if(bir.renk.length()==bir.isim.length()){
boolean birtobir=true;
}
Run Code Online (Sandbox Code Playgroud)
在这里,您创建一个名为birtobir 的新变量,并将其设置为true.此变量不是while循环中检查[或应该检查]的变量.我假设你实际上想要将类成员设置为true.为此,请替换boolean birtobir=true;为birtobir=true;
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |