代码如下,注释写的很清楚了。
/**
* 这个类用来判断用户输入的三个数的最大值,最小值和中间值。
* @author 刘明伟
*
*/
import javax.swing.JOptionPane;public class Number {
/**
* 方法minToMax将任意输入的三个数排序,输入参数i,j,k是要排序的数
* @param i
* @param j
* @param k
*/
public void minToMax(int i,int j,int k) {
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
}
/**
* 方法getMin返回三个输入参数的最小数
* @param i
* @param j
* @param k
* @return
*/
public int getMin(int i,int j,int k) {
minToMax(i,j,k);
return i;
}
/**
* 方法getMiddle返回三个输入参数的中间值
* @param i
* @param j
* @param k
* @return
*/
public int getMiddle(int i,int j,int k) {
minToMax(i,j,k);
return j;
}
/**
* 方法getMax返回三个输入参数的最大值
* @param i
* @param j
* @param k
* @return
*/
public int getMax(int i,int j,int k) {
minToMax(i,j,k);
return k;
}
/**
* main方法调用前面的方法完成程序的功能
* @param args
*/
public static void main(String[] args) {
Number ob = new Number();
try {
String str1 = JOptionPane.showInputDialog("请输入第一个整数:");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("请输入第二个整数:");
int j = Integer.parseInt(str2);
String str3 = JOptionPane.showInputDialog("请输入第三个整数:");
int k = Integer.parseInt(str3);
System.out.println("所输入的三个数为:" + " " + i + " " + j + " " + k);
System.out.println("其中最大的值为:" + ob.getMax(i,j,k));
System.out.println("中间值为:" + ob.getMiddle(i,j,k));
System.out.println("最小值为:" + ob.getMin(i,j,k));
}
catch (NumberFormatException e) {
System.out.println("输入的数据不合法!");
}
}
}执行结果:
所输入的三个数为: 37 35 32
其中最大的值为:32
中间值为:35
最小值为:37
这是怎么回事啊??minToMax方法好像没执行到一样的。大惑不解。。
/**
* 这个类用来判断用户输入的三个数的最大值,最小值和中间值。
* @author 刘明伟
*
*/
import javax.swing.JOptionPane;public class Number {
/**
* 方法minToMax将任意输入的三个数排序,输入参数i,j,k是要排序的数
* @param i
* @param j
* @param k
*/
public void minToMax(int i,int j,int k) {
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
}
/**
* 方法getMin返回三个输入参数的最小数
* @param i
* @param j
* @param k
* @return
*/
public int getMin(int i,int j,int k) {
minToMax(i,j,k);
return i;
}
/**
* 方法getMiddle返回三个输入参数的中间值
* @param i
* @param j
* @param k
* @return
*/
public int getMiddle(int i,int j,int k) {
minToMax(i,j,k);
return j;
}
/**
* 方法getMax返回三个输入参数的最大值
* @param i
* @param j
* @param k
* @return
*/
public int getMax(int i,int j,int k) {
minToMax(i,j,k);
return k;
}
/**
* main方法调用前面的方法完成程序的功能
* @param args
*/
public static void main(String[] args) {
Number ob = new Number();
try {
String str1 = JOptionPane.showInputDialog("请输入第一个整数:");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("请输入第二个整数:");
int j = Integer.parseInt(str2);
String str3 = JOptionPane.showInputDialog("请输入第三个整数:");
int k = Integer.parseInt(str3);
System.out.println("所输入的三个数为:" + " " + i + " " + j + " " + k);
System.out.println("其中最大的值为:" + ob.getMax(i,j,k));
System.out.println("中间值为:" + ob.getMiddle(i,j,k));
System.out.println("最小值为:" + ob.getMin(i,j,k));
}
catch (NumberFormatException e) {
System.out.println("输入的数据不合法!");
}
}
}执行结果:
所输入的三个数为: 37 35 32
其中最大的值为:32
中间值为:35
最小值为:37
这是怎么回事啊??minToMax方法好像没执行到一样的。大惑不解。。
解决方案 »
- java实现批处理
- 费了一下午时间,终于把解析UTF8做好了
- 谁能告诉PushbackInputStream这个类有什么用处
- 自己写的一个JavaBean希望能够零修改复用到web,console,webservice3种应用上
- JTable的问题-swing的bug?
- 新手想学JAVA..
- JTable中单元格编辑问题,急,谢谢
- 请教:MVC架构下的异常处理
- 代码审查问题:Denial of Service: Parse Double 如何处理
- 怎样把一个类包(javabook)做成一个.jar文件,然后在程序中调用?
- 我的五子棋未完成~~求救大虾!!!
- String对象问题~!!!!急急急
大的 小的 中的 都 出来了
把Int 改成Integer就行了
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
}
这里有问题,你好像定义错了。
/**
* 这个类用来判断用户输入的三个数的最大值,最小值和中间值。
* @author 刘明伟
*
*/
import javax.swing.JOptionPane;public class Number {
/**
* 方法getMin返回三个输入参数的最小数
* @param i
* @param j
* @param k
* @return
*/
public int getMin(int i,int j,int k) {
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
return i;
}
/**
* 方法getMiddle返回三个输入参数的中间值
* @param i
* @param j
* @param k
* @return
*/
public int getMiddle(int i,int j,int k) {
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
return j;
}
/**
* 方法getMax返回三个输入参数的最大值
* @param i
* @param j
* @param k
* @return
*/
public int getMax(int i,int j,int k) {
if (i > j ) {
//以下三行将i和j交换
i += j;
j = i - j;
i -= j;
}
if (i > k) {
i += k;
k = i -k;
i -= k;
}
if (j > k) {
j += k;
k = j - k;
j -= k;
}
return k;
}
/**
* main方法调用前面的方法完成程序的功能
* @param args
*/
public static void main(String[] args) {
Number ob = new Number();
try {
String str1 = JOptionPane.showInputDialog("请输入第一个整数:");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("请输入第二个整数:");
int j = Integer.parseInt(str2);
String str3 = JOptionPane.showInputDialog("请输入第三个整数:");
int k = Integer.parseInt(str3);
System.out.println("所输入的三个数为:" + " " + i + " " + j + " " + k);
System.out.println("其中最大的值为:" + ob.getMax(i,j,k));
System.out.println("中间值为:" + ob.getMiddle(i,j,k));
System.out.println("最小值为:" + ob.getMin(i,j,k));
}
catch (NumberFormatException e) {
System.out.println("输入的数据不合法!");
}
}
}
System.out.println("其中最大的值为:" + ob.getMax(i,j,k));
getMax返回值是k 所以最终方法的结果怎么都是k 。你没在getMax()方法中处理k 没发现方法体里面的minToMax(i,j,k);方法是多余的么...
所以你参数k你设定为什么值就打印出什么值了
i ,j 参数也是一样的
minToMax(i,j,k);
return k;
}你这样return k 还是 getMax(int i,int j,int k)的k,minToMax()只改变了传进去的形参
public class Number {
/**
* 方法getMin返回三个输入参数的最小数
* @param i
* @param j
* @param k
* @return
*/
public int getMin(int i,int j,int k) {
int min=(i>j?(j>k?k:j):(i>k?k:i));
return min;
}
/**
* 方法getMiddle返回三个输入参数的中间值
* @param i
* @param j
* @param k
* @return
*/
/**
* 方法getMax返回三个输入参数的最大值
* @param i
* @param j
* @param k
* @return
*/
public int getMax(int i,int j,int k) {
int max=(i>j?(i>k?i:k):(j>k?j:k));
return max;
}
/**
* main方法调用前面的方法完成程序的功能
* @param args
*/
public int getMiddle(int i,int j,int k) {
int middle = 0;
int max=(i>j?(i>k?i:k):(j>k?j:k));
int min=(i>j?(j>k?k:j):(i>k?k:i));
if(i<max&&i>min){
middle=i;
}else if(j<max&&j>min){
middle=j;
}else if(k<max&&k>min){
middle=k;
}
return middle;
}
public static void main(String[] args) {
Number ob = new Number();
String str1 = JOptionPane.showInputDialog("请输入第一个整数:");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("请输入第二个整数:");
int j = Integer.parseInt(str2);
String str3 = JOptionPane.showInputDialog("请输入第三个整数:");
int k = Integer.parseInt(str3);
System.out.println("所输入的三个数为:" + " " + i + " " + j + " " + k);
System.out.println("其中最大的值为:" + ob.getMax(i,j,k));
System.out.println("中间值为:" + ob.getMiddle(i,j,k));
System.out.println("最小值为:" + ob.getMin(i,j,k));
}
}
public class A {
public void f(int i) {
i++;
}
}class B {
public static void main(String[] args) {
int j = 4;
A ob = new A();
ob.f(j);
System.out.println(j);
}
}它的输出是4吧!
我还是有点匪夷所思啊。这到底是为什么呢?
i++;
后面加上
System.out.println(i);
看看,你会发现她会先变5然后变回4~
Java传parameter很难简单的说是值传递还是地址传递,例如传Array或对象就是地址传递了。
你仔细看一下这篇文章:
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html打基础的语法知识,最好的就是把:
http://java.sun.com/docs/books/tutorial/认认真真看完~