黑马程序员技术交流社区

标题: 帮我看看代码哪里错了啊……关于数值转换问题 [打印本页]

作者: ぐ⒏夠淘氣    时间: 2013-10-10 15:50
标题: 帮我看看代码哪里错了啊……关于数值转换问题
本帖最后由 ぐ⒏夠淘氣 于 2013-10-11 17:52 编辑

两个字符串的转换,代码如下:
import java.util.Scanner;
class Demo
{
        public static void main(String[] args)
        {
                Scanner scan = new Scanner(System.in);
                System.out.println("请输入第一个字符串:");
                String x = scan.nextLine();
                System.out.println("请输入第二个字符串:");
                String y = scan.nextLine();
                System.out.println("数据接收中…………");
                System.out.println("您输入的数值是:"+"x=\t"+x+"y="+y);
                System.out.println("数据转换中…………");
                 x = x ^ y;
                 y = y ^ x;
                 x = x ^ y;
                System.out.println("结果是:"+"x=\t"+x+"y="+y);
        }
}

运行结果如下图:这是什么意思啊?我没觉得哪里错了啊?改了好几遍了……


作者: lihaotian_120    时间: 2013-10-10 16:03
你的运算符异或不能对两个String类进行操作额,你的想法是将两个字符串对换吗?
作者: 喝龙血的我    时间: 2013-10-10 16:04
本帖最后由 喝龙血的我 于 2013-10-10 16:10 编辑

x^y  你是想做什么结果出来 ?
作者: lihaotian_120    时间: 2013-10-10 16:11
貌似有那么一个题,就是说不用中间变量然后要求你互换两个字,估计你做的是那个,其实你要是对换数字就好说了,因为数字可以进行异或运算
  1. import java.util.Scanner;
  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner scan = new Scanner(System.in);
  7.                 System.out.println("请输入第一个字符串:");
  8.                 int x = scan.nextInt();
  9.                 System.out.println("请输入第二个字符串:");
  10.                 int y = scan.nextInt();
  11.                 System.out.println("数据接收中…………");
  12.                 System.out.println("您输入的数值是:"+"x=\t"+x+"y="+y);
  13.                 System.out.println("数据转换中…………");
  14.                  x = x ^ y;
  15.                  y = y ^ x;
  16.                  x = x ^ y;
  17.                 System.out.println("结果是:"+"x=\t"+x+"y="+y);
  18.         }
  19. }
复制代码

作者: 中山狼    时间: 2013-10-10 16:12
我感觉你的意思是不是判断两个字符串是否相同啊?是不是想用刀异或里面的异或同一个数两次结果还是那个数这个小常识啊?
作者: ぐ⒏夠淘氣    时间: 2013-10-10 16:17
中山狼 发表于 2013-10-10 16:12
我感觉你的意思是不是判断两个字符串是否相同啊?是不是想用刀异或里面的异或同一个数两次结果还是那个数这 ...

是用这个   但是我要转的时两个字符串不是单纯的数字啊  怎么办?
作者: ぐ⒏夠淘氣    时间: 2013-10-10 16:18
lihaotian_120 发表于 2013-10-10 16:11
貌似有那么一个题,就是说不用中间变量然后要求你互换两个字,估计你做的是那个,其实你要是对换数字就好说 ...

我要转换的时两个字符串啊不是数字怎么办?
作者: ぐ⒏夠淘氣    时间: 2013-10-10 16:19
lihaotian_120 发表于 2013-10-10 16:03
你的运算符异或不能对两个String类进行操作额,你的想法是将两个字符串对换吗? ...

对啊对啊    这怎么做?
作者: FFF    时间: 2013-10-10 16:25
本帖最后由 FFF 于 2013-10-10 16:32 编辑

感觉你的类型使用错了!
y = y^x;这里
字符类型String怎么能与字符类型String做算术运算?

如果是数字的话、
改为int类型就可以通过了!
代码如下:
  1. import java.util.Scanner;

  2. public class Temp10_10 {

  3.         public static void main(String[] args)
  4.                 {
  5.                         Scanner scan = new Scanner(System.in);
  6.                         System.out.println("请输入第一个字符串:");
  7.                         int x = scan.nextInt();
  8.                         System.out.println("请输入第二个字符串:");
  9.                         int y = scan.nextInt();
  10.                         System.out.println("数据接收中…………");
  11.                         System.out.println("您输入的数值是:"+"x=\t"+x+"y="+y);
  12.                         System.out.println("数据转换中…………");
  13.                         x = x^y;                        
  14.                         y = y^x;
  15.                         x = x^y;
  16.                         System.out.println("结果是:"+"x=\t"+x+",y="+y);
  17.                 }

  18. }
复制代码

作者: 阿里策    时间: 2013-10-10 16:47
异或符号操作数据,不能操作字符串。
作者: hyz123456    时间: 2013-10-10 17:05
先判断输入的字符串是否只包含数字,否则RuntimeException
是则使用parseInt转成int型,然后用你的方法交换就好了

作者: long362144768    时间: 2013-10-10 17:54
异或操作是java的基本用法,可以节省空间开销,如果真的想对String类型做异或操作的话,可以转换为字符char[]型,数组长度去较长的一个,操作数组中每个元素就可以了,然后再组装成string类型就ok了,这是我的想法,笔试和面试都会考异或的。
作者: ぐ⒏夠淘氣    时间: 2013-10-10 20:49
哈哈,我自己想出办法来了,异或确实做不出来字符串的转换,经过了无数次的试验,终于解决了字符串互换赋值,我换了一种方法引进了第三方变量……不能用int,它只是对数值的转换,虽然可以运行,但是结果会是提示你打第一个字符串的时候,你若是输入的除数字外的任何东西都会出错异常!下面是我换了方法的代码:
import java.util.Scanner;
class Demo
{
        public static void main(String[] args)
        {
                Scanner scan = new Scanner(System.in);
                System.out.println("请输入第一个字符串:");
                String x = scan.nextLine();
                System.out.println("请输入第二个字符串:");
                String y = scan.nextLine();
                System.out.println("数据接收中…………");
                System.out.println("您输入的数值是:"+"x="+x+"\ty="+y);
                System.out.println("数据转换中…………");
                String z;
                z = x;
                x = y;
                y = z;
                System.out.println("结果是:"+"x="+x+"\ty="+y);
        }
}结果是对的哦~~~~!不过不能用异或来转换字符串还是不解啊……
作者: ぐ⒏夠淘氣    时间: 2013-10-10 20:54
亲们啊,异或是不能用来转字符串的吗???这个问题怎么解啊……
作者: jìng╮煜    时间: 2013-10-10 20:54
int z1 = new Integer(z);
都要转换才能使用异或
作者: dolphin    时间: 2013-10-10 21:39
你应该先去了解了解 异或符号 它的使用对象范围就知道怎么弄了,你这么个问法,谁会说个明明白白呢。
作者: To    时间: 2013-10-11 11:02


楼主你好。如果问题已解决请及时将帖子状态改为提问结束,如果未解决请继续提问。谢谢合作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2