Jump to content
新域网络技术论坛

Search the Community

Showing results for tags 'java'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • 论坛服务
    • 公告栏
  • 技术讨论
    • IPB相关讨论
    • PHP技术探讨
    • FREEBSD讨论
    • 其它技术
    • 软件分享
  • 业余无线电
    • 使用指南
    • 设备讨论

Blogs

There are no results to display.

Product Groups

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


位置


兴趣


呼号

Found 2 results

  1. 2019.04.13 学习内容: 1. Swap 变量返回问题 2. 字符串输入 3. 类似PHP中的魔法调用,用反射方式动态调用不同方法 import java.lang.reflect.*; import java.util.Scanner; import cn.lcfms.utils.*; public class Main { public static void main(String[] args) { String opt = ""; try { if (args.length > 0) { Vardump.print(args); opt = args[0].toLowerCase(); System.out.printf("Operate: %s \n", opt); } else { System.out.printf("Option is empty"); return; } } catch (Exception e) { System.out.println(e.toString()); } try { java.lang.Class[] empty_class = new java.lang.Class[]{}; java.lang.Object[] empty_object = new java.lang.Object[]{}; Method method = Main.class.getDeclaredMethod(opt, empty_class); method.setAccessible(true); method.invoke(null, empty_object); } catch (NoSuchMethodException e) { System.out.println(e.toString()); System.out.printf("Option '%s' is incorrect", opt); } catch (Exception e) { System.out.println(e.toString()); } } /** * 交换数值入口 */ private static void swap() { Integer a, b; a = 10; b = 20; System.out.printf("a = %d, b = %d\n", a, b); try { doSwap(a, b); } catch (Exception e) { System.out.println(e.toString()); } System.out.printf("a = %d, b = %d\n", a, b); } /** * 交换数值处理过程 * @param a * @param b * @throws Exception */ private static void doSwap(Integer a, Integer b) throws Exception { // 请在这里实现交换过程 int c = a; Integer cInteger = new Integer(c); Class<? extends Integer> aClass = a.getClass(); Field avalue = aClass.getDeclaredField("value"); avalue.setAccessible(true); avalue.set(a, b); Class<? extends Integer> bClass = b.getClass(); Field bvalue = bClass.getDeclaredField("value"); bvalue.setAccessible(true); bvalue.set(b, cInteger); } /** * 输入字符串 */ private static void input() { System.out.print("请输入你的字符串:"); Scanner s = new Scanner(System.in); String val = s.nextLine(); String outstr = "你输入的字符串为空"; if (val.length() > 0) { outstr = String.format("你输入的字符串为:%s,长度为:%d", val, val.length()); } System.out.println(outstr); } private static void rightnum() { System.out.println("run rightnum"); } }
  2. 这个问题原来是C++的版本,目前在学习Java中,问题就用Java描述吧。 看代码:将变量a 和 b的值交换后输出。当然实际情况下,肯定不允许这样的情况发生,如果可以传指参的话,直接使用指参就可以了,比如PHP里可以直接使用 function doSwap(&$a, &$b) {...} 就可以了,我查了一下JAVA是没有指参的,所以不能这么处理。代码中还有部分不是太理解,逻辑是理解了,等后续再看吧。 public class Main { public static void main(String[] args) { Integer a, b; a = 1; b = 2; System.out.printf("a = %d, b = %d\n", a, b); try { doSwap(a, b); } catch (Exception e) { System.out.println(e.toString()); } System.out.printf("a = %d, b = %d\n", a, b); } private static void doSwap(Integer a, Integer b) throws Exception { // 请在这里实现交换过程 } } 我这里先给出一个PHP版本的解法,不使用Class的情况是可以实现的,如果限制在Class环境中,暂时还没想到实现方式,PHP中没有内存操作的概。: $a = 10; $b = 20; echo "a:{$a} b:{$b}\n"; doSwap($a, $b); echo "a:{$a} b:{$b}\n"; function doSwap($a, $b) { /* 请实现交换两个变量 预期结果: a:1 b:2 a:2 b:1 */ global $a, $b; $c = $a; $a = $b; $b = $c; } 看一下JAVA的实现方式,你没看错,就这个操作需要这么长的代码: import java.lang.reflect.Field; public class Main { public static void main(String[] args) { Integer a, b; a = 1; b = 2; System.out.printf("a = %d, b = %d\n", a, b); try { doSwap(a, b); } catch (Exception e) { System.out.println(e.toString()); } System.out.printf("a = %d, b = %d\n", a, b); } private static void doSwap(Integer a, Integer b) throws java.lang.Exception { // 请在这里实现交换过程 int c = a; Integer cInteger = new Integer(c); Class<? extends Integer> aClass = a.getClass(); Field avalue = aClass.getDeclaredField("value"); avalue.setAccessible(true); avalue.set(a, b); Class<? extends Integer> bClass = b.getClass(); Field bvalue = bClass.getDeclaredField("value"); bvalue.setAccessible(true); bvalue.set(b, cInteger); } }
×
×
  • Create New...