java 运行程序出问题了,求大神看看
这是我写的龟兔赛跑的程序,运行不合适,求大神看看。。。。packagecom.briup.ch10;publicclasstrTest{publicstaticvoidm...
这是我写的龟兔赛跑的程序,运行不合适,求大神看看。。。。
package com.briup.ch10;
public class trTest{
public static void main(String[] args) {
Rabbit Rb=new Rabbit();
Tortoise Tt=new Tortoise();
try{
Rb.start();
Tt.start();
Rb.join();
Tt.join();
}catch(InterruptedException e){}
System.out.println("1111111111111111");
}
}
class Rabbit extends Thread{
Tortoise tt=new Tortoise();
public void run(){
for(int i=0;i<100;i=i+2){
try{
sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("Rabbish is running");
}
while (Tt.isAlive()){
System.out.println("Rabbish win ");
break
}
}
}
class Tortoise extends Thread{
Rabbit rb=new Rabbit();
public void run(){
for(int i=0;i<100;i++){
System.out.println("Tortoise is running");
}
while(Rb.isAlive()){
System.out.println("Tortoise win");
break;
}
}
} 展开
package com.briup.ch10;
public class trTest{
public static void main(String[] args) {
Rabbit Rb=new Rabbit();
Tortoise Tt=new Tortoise();
try{
Rb.start();
Tt.start();
Rb.join();
Tt.join();
}catch(InterruptedException e){}
System.out.println("1111111111111111");
}
}
class Rabbit extends Thread{
Tortoise tt=new Tortoise();
public void run(){
for(int i=0;i<100;i=i+2){
try{
sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("Rabbish is running");
}
while (Tt.isAlive()){
System.out.println("Rabbish win ");
break
}
}
}
class Tortoise extends Thread{
Rabbit rb=new Rabbit();
public void run(){
for(int i=0;i<100;i++){
System.out.println("Tortoise is running");
}
while(Rb.isAlive()){
System.out.println("Tortoise win");
break;
}
}
} 展开
展开全部
肯定错了。你2次new了2个对象,启动线程对象和while循环中的不是一个对象,循环条件根本不会执行,永无止境的跑下去 会出现 堆栈溢出异常
帮你改下如下:
import java.util.Scanner;
public class A {
public static void main(String[] args) {
// Rabbit Rb = new Rabbit();
// Tortoise Tt = new Tortoise();
try {
Tortoise.rb.start();
Rabbit.tt.start();
Tortoise.rb.join();
Rabbit.tt.join();
} catch (InterruptedException e) {
}
System.out.println("1111111111111111");
}
}
class Rabbit extends Thread {
static Tortoise tt = new Tortoise();
public void run(){
for(int i=0;i<100;i=i+2){
try{ sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
} System.out.println("Rabbish is running");
}
while (tt.isAlive()){
System.out.println("Rabbish win ");
break ;
}
}}
class Tortoise extends Thread {
static Rabbit rb = new Rabbit();
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("Tortoise is running");
}
while (rb.isAlive()) {
System.out.println("Tortoise win");
break;
}
}
}
追问
非常感谢你的解答,让我知道了如何在主函数中申明类可以调用其它类,下面的类为啥要用static 修饰,可以给我说说 static 修饰类的相关知识吗?加入不用static,还有其它方式实现的方法吗?求大神指点,
追答
static 修饰符 修饰的类或者变量是常驻内存的,也就是只需要实例化一次,static修饰的类或者变量可以直接用类名字去调用, 不用static ,你想在不同类中使用同一个类引用 就需要把这个类的引用当参数传递给其他类。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询