JAVA的奇怪现象!IF语句出错!总是只执行最后一句!
发布网友
发布时间:2024-09-30 09:04
我来回答
共1个回答
热心网友
时间:2024-10-31 01:43
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
程序要解决的问题是:摆25*25的花方阵。一层红花,一层黄花。问:需要多少盘红花?需要多少盘黄花?
编译可以通过。但运行时,无论是输入red、yellow还是非法数据,都是显示: 没有***的颜色的花(***是输入的字符串)
好奇怪啊!想砸电脑了!可惜又是刚买的电脑,舍不得!各位大侠帮帮忙啦
import javax.swing.JOptionPane;
public class flower
{
public static void main(String args[])
{
System.out.println("摆25*25的花方阵。一层红花,一层黄花。问:需要多少盘红花?需要多少盘黄花?");
String outColor=JOptionPane.showInputDialog("请确定:最外排是红花还是黄花?输入red或者yellow");
int row[]=new int[26];
int sum[]=new int[26];
row[0]=0;
int i;
for (i=1;i<=25;i++)
row[i]=i;
for(i=1;i<=25;i++)
sum[i]=row[i]*2+(row[i]-2)*2;
int total_1=0;
int total_2=0;
for(i=1;i<=25;i+=2)
{
total_1+=sum[i];
total_2+=sum[i-1];
}
if(outColor=="red")
{
System.out.println("当红花在最外排时,红花一共有"+total_1+"盘,而黄花一共有"+total_2+"盘。");
}
else if(outColor=="yellow")
{
System.out.println("当黄花在最外排时,红花一共有"+total_2+"盘,而黄花一共有"+total_1+"盘。");
}
else if(outColor!="red"&&outColor!="yellow")
{
System.out.println("没有"+outColor+"的颜色的花");
}
}
}
解析:
import javax.swing.JOptionPane;
public class flower
{
public static void main(String args[])
{
System.out.println("摆25*25的花方阵。一层红花,一层黄花。问:需要多少盘红花?需要多少盘黄花?");
String outColor=JOptionPane.showInputDialog("请确定:最外排是红花还是黄花?输入red或者yellow");
System.out.println(outColor);
int row[]=new int[26];
int sum[]=new int[26];
int i;
for (i=1;i<=25;i++)
row[i]=i;
for(i=1;i<=25;i++)
sum[i]=row[i]*2+(row[i]-2)*2;
int total_1=0;
int total_2=0;
for(i=1;i<=25;i+=2)
{
total_1+=sum[i];
total_2+=sum[i-1];
}
if(outColor.equals("red"))
{
System.out.println("当红花在最外排时,红花一共有"+total_1+"盘,而黄花一共有"+total_2+"盘。");
}
else if(outColor.equals("yellow"))
{
System.out.println("当黄花在最外排时,红花一共有"+total_2+"盘,而黄花一共有"+total_1+"盘。");
}
else if(outColor!="red"&&outColor!="yellow")
{
System.out.println("没有"+outColor+"的颜色的花");
}
}
}
这样就可以了,你能看出来有什么不同吗?呵呵,只是把
if(outColor=="red")
改为if(outColor.equals("red"))
else if(outColor=="yellow")
改为else if(outColor.equals("yellow"))
这样就行了,你知道为什么吗??
主要是你不太理解==和.equals的区别,主要是==是判断是否引用的是一个对象,equals是判断字符是否想同。
你可以到网上多搜点资料看看。