一段小代码报错,我找不到原因

zuodicat 2012-08-09 04:43:21
如下,红色段是后面加入的,刚开始时运行正确,然后加入红色段后就报错了
package xiao.java5;
import java.io.*;
public class arrObject {
public static void main(String[] args) throws Exception{
//定义一个可以存放四只狗的对象数组
Dog dogs[]=new Dog[4];

//给狗组中的元素赋值
//dogs[0]=new Dog();
//dogs[0].setName("001");
//dogs[0].setWeight(5);

//从控制台输入各狗信息
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
for(int i=0;i<4;i++)
{
dogs[i]=new Dog();
System.out.println("请输入第"+(i+1)+"只狗名");
//从控制台读取狗名
String name=br.readLine();
//将名字赋给对象
dogs[i].setName(name);
System.out.println("请输入体重");
String wweight=br.readLine();
//把String->float
float weight=Float.parseFloat(wweight);
//将体重赋给对象
dogs[i].setWeight(weight);
}
//总体重
float BigDog=0;
for(int i=0;i<4;i++)
{
BigDog+=dogs[i].getWeight();
}
//计算平均体重
float avgWeight=BigDog/4;
System.out.println("平均体重是"+avgWeight+"kg");

//找出体重最大狗
//假设第一只体重最大
float maxWeight=dogs[0].getWeight();
int maxIndex=0;
//按顺序和后面的狗比较
for(int i=1;i<4;i++)

{
if(maxWeight<dogs[i].getWeight())
{
//修改
maxWeight=dogs[i].getWeight();
maxIndex=i;

}
}
System.out.println("体重最大的是第"+(maxIndex+1)+"只狗"+
"体重是"+dogs[maxIndex].getWeight());

}

//定义一个狗类
class Dog
{
private String name;
private float weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}

报错如下

...全文
236 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
看着奢扣 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 4 楼 的回复:
Java code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class ……
[/Quote]
结贴吧。
yijiulove 2012-08-10
  • 打赏
  • 举报
回复
 // 定义一个狗类
static class Dog {


上面的编辑有问题,只要在class Dog 前加上static修饰就可以了。
yijiulove 2012-08-10
  • 打赏
  • 举报
回复
可以吧dog类改成静态内部类就可以了,上面的方法也可以。
package com.cd.apps;

import java.io.*;

public class Tst2 {
public static void main(String[] args) throws Exception {
// 定义一个可以存放四只狗的对象数组
Dog dogs[] = new Dog[4];

// 给狗组中的元素赋值
// dogs[0]=new Dog();
// dogs[0].setName("001");
// dogs[0].setWeight(5);

// 从控制台输入各狗信息
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
for (int i = 0; i < 4; i++) {
dogs[i] = new Dog();
System.out.println("请输入第" + (i + 1) + "只狗名");
// 从控制台读取狗名
String name = br.readLine();
// 将名字赋给对象
dogs[i].setName(name);
System.out.println("请输入体重");
String wweight = br.readLine();
// 把String->float
float weight = Float.parseFloat(wweight);
// 将体重赋给对象
dogs[i].setWeight(weight);
}
// 总体重
float BigDog = 0;
for (int i = 0; i < 4; i++) {
BigDog += dogs[i].getWeight();
}
// 计算平均体重
float avgWeight = BigDog / 4;
System.out.println("平均体重是" + avgWeight + "kg");

// 找出体重最大狗
// 假设第一只体重最大
float maxWeight = dogs[0].getWeight();
int maxIndex = 0;
// 按顺序和后面的狗比较
for (int i = 1; i < 4; i++)

{
if (maxWeight < dogs[i].getWeight()) {
// 修改
maxWeight = dogs[i].getWeight();
maxIndex = i;

}
}
System.out.println("体重最大的是第" + (maxIndex + 1) + "只狗" + "体重是"
+ dogs[maxIndex].getWeight());
}

// 定义一个狗类
static class Dog {
private String name;
private float weight;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public float getWeight() {
return weight;
}

public void setWeight(float weight) {
this.weight = weight;
}
}
}
yangezheyue 2012-08-10
  • 打赏
  • 举报
回复
dog是一个内部类,不能直接引用的你得new一个Test之后调用它本身的dog
shizhusz110 2012-08-10
  • 打赏
  • 举报
回复
dogs可能没有那么多 造成索引超界
zuodicat 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
Java code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class Test {
pub……
[/Quote]
谢谢
zuodicat 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你Dog类的存放位置有问题,你之前的方式相当于内部类,放在外面就行了
还有注意Java类的命名规范,首字母大写

Java code


import java.io.*;

public class ArrObject {
public static void main(String[] args) throws Exception{
//定义一个可以存放四只狗的对象……
[/Quote]
谢谢
看着奢扣 2012-08-09
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class Test {
public static void main(String[] args) throws Exception{
//定义一个可以存放四只狗的对象数组
Dog[] dogs=new Dog[4];
//给狗组中的元素赋值
//dogs[0]=new Dog();
//dogs[0].setName("001");
//dogs[0].setWeight(5);

//从控制台输入各狗信息
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
for(int i=0;i<4;i++)
{
dogs[i]=new Test().new Dog();
System.out.println("请输入第"+(i+1)+"只狗名");
//从控制台读取狗名
String name=br.readLine();
//将名字赋给对象
dogs[i].setName(name);
System.out.println("请输入体重");
String wweight=br.readLine();
//把String->float
float weight=Float.parseFloat(wweight);
//将体重赋给对象
dogs[i].setWeight(weight);
}
//总体重
float BigDog=0;
for(int i=0;i<4;i++)
{
BigDog+=dogs[i].getWeight();
}
//计算平均体重
float avgWeight=BigDog/4;
System.out.println("平均体重是"+avgWeight+"kg");

//找出体重最大狗
//假设第一只体重最大
float maxWeight=dogs[0].getWeight();
int maxIndex=0;
//按顺序和后面的狗比较
for(int i=1;i<4;i++)

{
if(maxWeight<dogs[i].getWeight())
{
//修改
maxWeight=dogs[i].getWeight();
maxIndex=i;

}
}
System.out.println("体重最大的是第"+(maxIndex+1)+"只狗"+
"体重是"+dogs[maxIndex].getWeight());
}

//定义一个狗类
class Dog
{
private String name;
private float weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}
}
看着奢扣 2012-08-09
  • 打赏
  • 举报
回复
for循环里这么写有问题
dogs[i]=new Dog();
你必须先new Test的对象
dogs[i]=new Test().new Dog();
风尘中国 2012-08-09
  • 打赏
  • 举报
回复
你Dog类的存放位置有问题,你之前的方式相当于内部类,放在外面就行了
还有注意Java类的命名规范,首字母大写

import java.io.*;

public class ArrObject {
public static void main(String[] args) throws Exception{
//定义一个可以存放四只狗的对象数组
Dog dogs[]=new Dog[4];

//给狗组中的元素赋值
//dogs[0]=new Dog();
//dogs[0].setName("001");
//dogs[0].setWeight(5);

//从控制台输入各狗信息
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
for(int i=0;i<4;i++)
{
dogs[i]=new Dog();
System.out.println("请输入第"+(i+1)+"只狗名");
//从控制台读取狗名
String name=br.readLine();
//将名字赋给对象
dogs[i].setName(name);
System.out.println("请输入体重");
String wweight=br.readLine();
//把String->float
float weight=Float.parseFloat(wweight);
//将体重赋给对象
dogs[i].setWeight(weight);
}
//总体重
float BigDog=0;
for(int i=0;i<4;i++)
{
BigDog+=dogs[i].getWeight();
}
//计算平均体重
float avgWeight=BigDog/4;
System.out.println("平均体重是"+avgWeight+"kg");

//找出体重最大狗
//假设第一只体重最大
float maxWeight=dogs[0].getWeight();
int maxIndex=0;
//按顺序和后面的狗比较
for(int i=1;i<4;i++)

{
if(maxWeight<dogs[i].getWeight())
{
//修改
maxWeight=dogs[i].getWeight();
maxIndex=i;

}
}
System.out.println("体重最大的是第"+(maxIndex+1)+"只狗"+
"体重是"+dogs[maxIndex].getWeight());
}

//定义一个狗类

}

class Dog{
private String name;
private float weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}
hechuanchuan 2012-08-09
  • 打赏
  • 举报
回复
图片挂了

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧