1.在学习单链表并测试一个小游戏的过程中(击鼓传花),出现了String不能cast to int的问题 ,截图如下
解决办法是
:
Integer.parseInt();这个方法要仔细研究!
把字符串 转换成 INT,其他的(Double float等)也有类似的方法。
一般用在 输入对话框
因为输入对话框只认为输入为string
当输入整数时需要这个转换。
2.在击鼓传花小游戏中,犯了以下的错误:
我们把iCount定义为成员变量,则永远默认为 iCount = num;
正确的方法是把要因方法内部产生变化而随之变化的变量定义在相应的方法之中:
3.
public Object pop() throws Exception {
if(isEmpty()){
throw new Exception("空栈,无法删除");
}
top--;
return stack[top];
//top-- //这里会报错,Unreachable code!!! ! 因为程序在return处已经接触,正确方法是把top--放在return之前;
}
4.大错误!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Object[] stack;//对象数组 --------------------------------------------此处是成员变量!!!
final int defauluSize = 10;//默认最大长度
int maxSize;//最大长度
int top;//栈顶位置
public SequenceStack (){
init(defauluSize);
}
public SequenceStack (int i){
init(i);
}
public void init(int i){
this.maxSize = i;
top=0;
Object[] stack = new Object[i]; -------------------------------------------------------------此处是局部变量,因为是Object[] stack 是在方法里新new的,所以只在方法里有用!
}
public void push(Object obj) throws Exception {
// TODO Auto-generated method stub
//首先判断栈是否已满
if(top == maxSize)
{
throw new Exception("堆栈已满!");
}
stack[top]=obj; ---------------------------------------------------------------------------- 此处想用成员变量的 stack[] ;然而如果在main方法里用 stack.push(temp)的时候,这个stack会抛出java.lang.NullPointerException异常!!!切记!!!!
top++;
}
5. 关于Scanner最常用的方法:
int tmep;
Scanner in = new Scanner(System.in);------------------------------------------- Scanner.nextInt()方法:|
Scans the next token of the input as an int.
-
Returns:
- the int scanned from the input
temp = in.nextInt();
stack.push(temp);
6.String s1 = "China";--------------------s1 == s2 是true的,s1第一次在栈中创建了China,s2第二次直接在栈中找到了china,而s3 = new String("China")的话,则s1!=s3,s3在 堆(heap)中创建的。而且凡事new出来的对象是绝对不同的,即s4 = new String("China"), S3 != S4 但是equals()方法判断内容是否相 同,s3与s4内容是相同的。!!!!!!!!!!!!!!!然而String类很特殊,它重写了从父类集成过来的hashCode()方法,使得两个字符串内容相同,他们的
hashcode也相同。
String s2 = "China",
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println("\n-----------------\n");------------------------System类里面有个方法,identityHashCode()方法,它是重写之前的hashCode()方 法,所以此时以下两个不相同
System.out.println(System.identityHashCode(s3));
System.out.println(System.identityHashCode(s4));