我有一个孩子,其老师是MIA,并且他的作业即将到期。尝试运行该程序时,我得到了以下分配和一个无用的错误。我正在尝试自己学习问题,因此我可以将其作为学习的经验,而不是简单地放弃解决方案。以下是作业:
该程序应提示用户进入一个州并打印州鸟和花。用户应该能够进入状态而不必担心情况。 (例如,用户可以输入马里兰州,马里兰州,马里兰州或任何其他可能的大小写字符组合。状态还可以包含开头和结尾的空格。提示:将州信息存储在多维数组中。程序应继续提示输入用户进入状态直到输入“无”,您将需要做一些研究以找到状态花鸟。
这是到目前为止编写的Java文件: TestSBF.java
import java.util.*;
public class TestSBF {
public static void main(String[] args) {
String stateName = "";
//ArrayList SBF = new ArrayList();
ArrayList info = new ArrayList();
System.out.println("Enter your favorite state or 'None' "
+ "to exit program:");
stateName = "Alabama".trim().toUpperCase();
while (!stateName.equalsIgnoreCase ("NONE")) {
SBF Alabama = new SBF();
if (Alabama.getFound()) {
System.out.println(stateName);
String bird = Alabama.getBird();
System.out.println("Bird: " + bird);
String flower = Alabama.getFlower();
System.out.println("Flower: " + flower);
} else {
System.out.println("State not found");
}
info.add(Alabama);
System.out.println("Please enter next state");
}
for (int i=0; i<info.size();i++){
System.out.println(info.toString());
}
}
}
SBF.java
import java.util.*;
public class SBF {
static final int STATES = 50;
static final int INFO = 3;
private String stateName;
private String stateBird;
private String stateFlower;
private boolean isStateFound;
private static String stateInfo[][] =
{
{"ALABAMA","Yellowhammer","Camellia"},
{"ALASKA","Willow Ptarmigan","Forget-me-not"},
{"ARIZONA","Cactus Wren","Saguaro Cactus Blossom"},
{"ARKANSAS","Mockingbird","Apple Blossom"},
{"CALIFORNIA","California Valley Quail", "Golden Poppy"},
{"COLORADO","Lark Bunting", "Rocky Mountain Columbine"},
{"CONNECTICUT","American Robin", "Mountain Laurel"},
{"DELAWARE","Blue Hen Chicken","Peach Blossom"},
{"FLORIDA","Mockingbird","Orange Blossom"},
{"GEORGIA","Brown Thrasher","Cherokee Rose"},
{"HAWAII","Nene(Hawaiian Goose)","Yellow Hibiscus/Pua Aloalo"},
{"IDAHO","Mountain Bluebird","Syringa"},
{"ILLINOIS","Cardinal","Native Violet"},
{"INDIANA","Cardinal","Peony"},
{"IOWA","Goldfinch","Wild Rose"},
{"KANSAS","Western Meadowlark","Native Sunflower"},
{"KENTUCKY","Northern Cardinal","Goldenrod"},
{"LOUISIANA","Eastern Brown Pelican","Magnolia"},
{"MAINE","Chickadee","White Pine Cone and Tassel"},
{"MARYLAND","Baltimore Oriole","Black-eyed Susan",},
{"MASSACHUSETTS","Chickadee","Mayflower"},
{"MICHIGAN","American Robin","Apple Blossom"},
{"MINNESOTA","Common Loon","Pink and White Lady's Slipper"},
{"MISSISSIPPI","Mockingbird","Magnolia"},
{"MISSOURI","Bluebird","Hawthorn"},
{"MONTANA","Western Meadowlark","Bitterroot"},
{"NEBRASKA","Western Meadowlark","Goldenrod"},
{"NEVADA","Mountain Bluebird","Sagebrush"},
{"NEW HAMPSHIRE","Purple Finch","Purple Lilac"},
{"NEW JERSEY","Eastern Goldfinch","Violet"},
{"NEW MEXICO","Greater Roadruner","Yucca"},
{"NEW YORK","Eastern Bluebird","Rose"},
{"NORTH CAROLINA","Cardinal","Dogwood"},
{"NORTH DAKOTA","Western Meadowlark","Wild Prairie Rose"},
{"OHIO","Cardinal","Scarlet Carnation"},
{"OKLAHOMA","Scissor-tailed Flycatcher","Misletoe"},
{"OREGON","Western Meadowlark","Oregon Grape"},
{"PENNSYLVANIA","Ruffed Grouse","Mountain Laurel"},
{"RHODE ISLAND","Rhode Island Red","Violet"},
{"SOUTH CAROLINA","Carolina Wren","Yellow Jessamine"},
{"SOUTH DAKOTA","Ring-necked Pheasant","Pasque Flower"},
{"TENNESSEE","Nothern Mockingbird","Iris"},
{"TEXAS","Mockingbird","Bluebonnet"},
{"UTAH","California Gull","Sego Lily"},
{"VERMONT","Hermit Thrush","Red Clover"},
{"VIRGINIA","Cardinal","Dogwood"},
{"WASHINGTON","Willow Goldfinch","Rhodedendron"},
{"WEST VIRGINIA","Cardinal","Rhodedendron"},
{"WISCONSIN","American Robin","Wood Violet"},
{"WYOMING","Western Meadolark","Indian Paintbrush"}};
public SBF (String[][] si, String sn, String sb, String sf, boolean f) {
stateName = sn;
stateBird = sb;
stateFlower = sf;
isStateFound = f;
stateInfo = si;
}
public SBF(){
for (int i=0; i<STATES;i++) {
for (int j=0; j<INFO;j++) {
if (!stateName.equalsIgnoreCase(stateInfo[i][0])) {
isStateFound = false;
} else {
isStateFound = true;
stateBird = stateInfo[j][0];
stateFlower = stateInfo[j][1];
break;
}
}
}
}
public boolean getFound() {
return isStateFound;
}
public String getBird() {
return stateBird;
}
public String getFlower() {
return stateFlower;
}
public String toString() {
String str = "\n***Thank you for using the SBF app***\n"
+ "A summary report for each State you selected is as follows: "
+ stateName + ": " + stateBird + "\tFlower: " + stateFlower +
"\nStay safe and use this app again!";
return str;
}
}
产生的错误是:
Enter your favorite state or 'None' to exit program:
Exception in thread "main" java.lang.NullPointerException
at SBF.<init>(SBF.java:85)
at TestSBF.main(TestSBF.java:29)
I see that the lines SBF Alabama = new SBF();
(TestSBF.java) and if (!stateName.equalsIgnoreCase(stateInfo[i][0])) {
(SBF.java) are getting called as the errors but for the life of me, I cannot figure why what value is null. Any assistance would be greatly appreciated, thanks in advance.