求帮助一个程序上的小问题(今天才开始学java)
java吧
全部回复
仅看楼主
level 3
My_德意志 楼主
import java.util.*;
public class a{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
Random number=new Random();
int botn=number.nextInt(3);
System.out.println("请出手:");
String a=in.next();
int c=99;
if(a=="剪刀")
c=0;
if(a=="石头")
c=1;
if(a=="布")
c=2;
String b="safdsa";
switch(botn){
case 0:b=("剪刀");System.out.println(b);break;
case 1:b=("石头");System.out.println(b);break;
case 2:b=("布");System.out.println(b);break;
}
System.out.println("a:"+a+"******");
System.out.println("c:"+c);
System.out.println("botn:"+botn);
if(c==botn)
{System.out.println("平手");}
else if(c==botn+1)
{System.out.println("你赢了");}
else if(c==0&&botn==2)
{System.out.println("你赢了");}
else System.out.println("你输了");
}
}
我给c的初始值是99,但是为什么跟在后面的if语句,不能给变量c赋值了,导致程序后段不能判断输赢,c的值一直是99
2014年10月08日 15点10分 1
level 8
用 if else 好像是因为你3个都用if了……貌似不能这么用……用swith case 好像也行……if条件后面好像要大括号的……→_→我也是个渣。
2014年10月08日 15点10分 2
额,我很确信不是这个问题
2014年10月08日 15点10分
level 12
说明a,没有正确获取,没准乱码了呢?
2014年10月08日 15点10分 3
可a的确获取的就是我输入的中文,是不是不能那样拿来判断?
2014年10月08日 15点10分
回复 My_德意志 :"剪刀".equals(a)
2014年10月08日 15点10分
level 12
判断字符串相等,用equals方法
2014年10月08日 15点10分 4
明白了,谢谢!十分感谢!
2014年10月08日 15点10分
level 10
楼主威武。。。
2014年10月08日 15点10分 5
level 7
A.类的名称应该大写;
B.字符串的比较是 equals . for example: a.equals(b) 那么你的a=="剪刀" 是进不去的;
C.刚开始学java,尽量注意你的代码格式,良好的格式会成功的一半;
D.师兄只能帮你这么多了。
2014年10月08日 15点10分 6
噢,明白了。格式是因为复制过来,缩进没有了。好的,谢谢师兄,十分感谢!
2014年10月08日 15点10分
level 3
My_德意志 楼主
我感觉问题出在if的那个括号里:
if(a=="剪刀")
c=0;
if(a=="石头")
c=1;
if(a=="布")
c=2;
可是哪里错了我不明白,难道用这条语句String a=in.next();获取的a不能用来判断吗
2014年10月08日 15点10分 7
level 7
问题因该出于String类的储存方式
String 类在赋值的时候会为那值开辟一处空间、创建对象的时候又会新开辟一处储存空间
c的储存位置和后来输入的String新对象的储存位置不同
而==判断的是对象的储存位置、因此IF的结果都是FALSE
而equals判断的是值是否一致、
如果错了或有遗漏、楼下补充和改进、
2014年10月08日 20点10分 9
也就是说==判断的是内存位置,equals判断的是内容是否一致
2014年10月09日 06点10分
level 11

public class Youxi{
static int jd = 1;
static int qt = 2;
static int bu = 3;
public static void jd(int n)
{
System.out.println("电脑出了剪刀");
if(n==Youxi.jd)
{
System.out.println("你也出了剪刀");
System.out.println("平局");
}
else if(n==Youxi.qt)
{
System.out.println("你出了拳头");
System.out.println("电脑输了");
}
else
{
System.out.println("你出了布");
System.out.println("你输了");
}
}
public static void qt(int n)
{
System.out.println("电脑出了拳头");
if(n==Youxi.jd)
{
System.out.println("你出了剪刀");
System.out.println("你输了");
}
else if(n==Youxi.qt)
{
System.out.println("你出了拳头");
System.out.println("平局");
}
else
{
System.out.println("你出了布");
System.out.println("电脑输了");
}
}
public static void bu(int n)
{
System.out.println("电脑出了布");
if(n==Youxi.jd)
{
System.out.println("你出了剪刀");
System.out.println("电脑输了");
}
else if(n==Youxi.qt)
{
System.out.println("你出了拳头");
System.out.println("你输了");
}
else
{
System.out.println("你出了布");
System.out.println("平局");
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("****开始游戏*******");
System.out.println("1代表剪刀,2代表石头,3代表布,其他键退出");
Random r = new Random();
while(true)
{
int ni = sc.nextInt();
int suiji = r.nextInt(4);
if (suiji == Youxi.jd)
{ jd(ni);}
else if (suiji ==Youxi.qt)
{ qt(ni);}
else if(suiji ==Youxi.bu)
{bu(ni);}
else
{
if(ni>3||ni<0)
{
break;
}
}
}
}
}
2014年10月09日 06点10分 11
level 1
if ()『』
else if()『】
else if(){}
........
else
{}
2014年10月09日 07点10分 12
1