JAVA程序.输入3个数字,有IF语句,从小到大排序

这是我写的代码
import javax.swing.JOptionPane;
public class Arrange{
public static void main (String args[]){
String str;
int x,y,z;
str=JOptionPane.showInputDialog("请输入第一个数");
x=Integer.parseInt (str);
str=JOptionPane.showInputDialog("请输入第二个数");
y=Integer.parseInt (str);
str=JOptionPane.showInputDialog("请输入第三个数");
z=Integer.parseInt (str);
if(x>y)
if(x>z)
if(y>z)
x=z;
y=y;
z=x;
else
x=y;
y=z;
z=x;
else
if(y<z)
x=y;
y=x;
z=z;
else
if(x>z)
if(y>z)
x=z;
y=x;
z=y;
else
if(y>z)
x=x;
y=z;
z=y;
else
x=x;
y=y;
z=z;
System.out.println("从小到大排列="+x+" "+y+" "+z);

}
}
运行的时候问题非常严重!
求高手帮我找出问题出现在那里,或者给一个完美的代码,非常感谢!

我按你的方法改:

import javax.swing.JOptionPane;

public class Arrange{
public static void main (String args[]){
String str;
int x,y,z;
int temp;
str=JOptionPane.showInputDialog("请输入第一个数");
x=Integer.parseInt (str);
str=JOptionPane.showInputDialog("请输入第二个数");
y=Integer.parseInt (str);
str=JOptionPane.showInputDialog("请输入第三个数");
z=Integer.parseInt (str);

if(x>y) {
temp = y;
y = x;
x = temp;
}

if(y>z){
temp = y;
y = z;
z = temp;
}
if(x>y){
temp = y;
y = x;
x = temp;
}

System.out.println("从小到大排列="+x+" "+y+" "+z);

}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-04-08
两个数的交换是这样的,temp=a,b=a,a=temp或者a=a+b,b=a-b,a=a-b这样才能完成交换.
你上面的程序要这样写:
int a[];
int temp;
//初始化a〔〕略
for (int i=0;i<a.lenth;i++)
{
for (int j=i;j<a.lenth;j++)
{
if (a[i]<a[j])
{
temp= a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
第2个回答  2007-04-08
你的问题出在数字交换上
比如
x=z;//x=z
y=y;//y=y
z=x;//z=x 这时候x=z,那么就是z=z
这样x的值就被湮灭了
第3个回答  2007-04-08
不用中间变量的话你x,y,z的值都不对,建议增加a,b,c变量用来储存要输出的数
相似回答