一段小代码报错,我找不到原因
如下,红色段是后面加入的,刚开始时运行正确,然后加入红色段后就报错了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;
}
}
报错如下
--------------------编程问答-------------------- 图片挂了 --------------------编程问答-------------------- 你Dog类的存放位置有问题,你之前的方式相当于内部类,放在外面就行了
还有注意Java类的命名规范,首字母大写
--------------------编程问答-------------------- for循环里这么写有问题
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;
}
}
dogs[i]=new Dog();
你必须先new Test的对象
dogs[i]=new Test().new Dog(); --------------------编程问答--------------------
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;
}
}
}
谢谢 --------------------编程问答--------------------
谢谢 --------------------编程问答--------------------
结贴吧。 --------------------编程问答-------------------- dogs可能没有那么多 造成索引超界 --------------------编程问答-------------------- dog是一个内部类,不能直接引用的你得new一个Test之后调用它本身的dog --------------------编程问答-------------------- 可以吧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;
}
}
}
// 定义一个狗类
static class Dog {
上面的编辑有问题,只要在class Dog 前加上static修饰就可以了。
补充:Java , Java SE