Java-比较Sentinel值字符串的问题
我的while循环和sentinel值没有注册有一个简单的问题。我已经得出结论,我的问题在于while循环,或者可能是用户输入的分配。我的程序的基本思想是我有一个带有字符串值的2D数组。我正在尝试根据用户输入访问这些内容。我询问用户想要什么状态,然后我的程序将返回状态、状态鸟和状态花。在main类中,我需要请求用户输入,使用while循环,以及我选择为“none”的sentinel值。我希望用户能够继续询问状态,直到他们在命令行中输入none。我在代码中加入了注释,以帮助尝试和理解我正在尝试做的事情。我的问题是:为什么我的哨兵价值观不起作用?即使我没有输入任何内容,循环也会永远持续。为什么我的代码即使给程序一个合法的输入,比如“Texas”,也不返回输出值Java-比较Sentinel值字符串的问题,java,multidimensional-array,while-loop,sentinel,Java,Multidimensional Array,While Loop,Sentinel,我的while循环和sentinel值没有注册有一个简单的问题。我已经得出结论,我的问题在于while循环,或者可能是用户输入的分配。我的程序的基本思想是我有一个带有字符串值的2D数组。我正在尝试根据用户输入访问这些内容。我询问用户想要什么状态,然后我的程序将返回状态、状态鸟和状态花。在main类中,我需要请求用户输入,使用while循环,以及我选择为“none”的sentinel值。我希望用户能够继续询问状态,直到他们在命令行中输入none。我在代码中加入了注释,以帮助尝试和理解我正在尝试做的
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.io.IOException;
类StateInfo{
专用int计数器;
私人互联网i;
私人int摘要[];
公共字符串输出;
私有字符串用户输入;
//50个州,每个索引有3个条目(州、鸟、花)
//字符串[][]stateInfo=新字符串[50][3];
字符串stateInfo[][]={
{“阿拉巴马”、“茶花”、“黄锤”},
{“阿拉斯加”,“阿尔卑斯山勿忘我”,“柳树松鸡”},
{“亚利桑那州”、“仙人掌之花”、“仙人掌鹪鹩”},
{“阿肯色州”、“苹果花”、“知更鸟”},
{“加州”、“加州罂粟”、“加州鹌鹑”},
{“科罗拉多州”、“落基山脉科伦拜恩”、“云雀邦廷”},
{“康涅狄格州”,“山月桂”,“美国知更鸟”},
{“特拉华”,“桃花”,“蓝母鸡”},
{“佛罗里达”,“橙花”,“北知更鸟”},
{“乔治亚州”、“切诺基玫瑰”、“布朗·斯拉舍尔”},
{“夏威夷”,“夏威夷鹅”,“夏威夷鹅”},
{“爱达荷州”、“丁香花”、“山蓝鸟”},
{“伊利诺伊州”、“紫罗兰州”、“北方红衣主教”},
{“印第安纳”、“牡丹”、“北方红衣主教”},
{“爱荷华州”、“野玫瑰”、“东部金翅雀”},
{“堪萨斯”,“野生向日葵”,“西部草地云雀”},
{“肯塔基”,“黄花”,“北红衣主教”},
{“路易斯安那”、“路易斯安那鸢尾”、“褐鹈鹕”},
{“缅因州”、“白色松果和流苏”、“黑冠山雀”},
{“马里兰”,“黑眼苏珊”,“巴尔的摩黄鹂”},
{“Massachussets”、“五月花”、“黑冠山雀”},
{“密歇根”,“矮人湖鸢尾”,“美国知更鸟”},
{“明尼苏达州”、“粉色和白色女士拖鞋”、“普通九龙”},
{“密西西比”,“科瑞奥普斯”,“北知更鸟”},
{“密苏里”、“白山楂花”、“东方蓝鸟”},
{“蒙大拿”、“比特罗”、“西部草地云雀”},
{“内布拉斯加州”、“一枝黄花”、“西部草地云雀”},
{“内华达州”、“山艾树”、“山蓝鸟”},
{“新罕布什尔州”,“粉红女士拖鞋”,“紫雀”},
{“新泽西”,“紫罗兰”,“东金翅雀”},
{“新墨西哥州”、“尤卡”、“路行者”},
{“纽约”、“玫瑰”、“东方蓝鸟”},
{“北卡罗来纳州”、“山茱萸”、“北红衣主教”},
{“北达科他州”、“野生草原玫瑰”、“西部草地云雀”},
{“俄亥俄州”、“白延龄草”、“北方红衣主教”},
{“俄克拉荷马州”、“槲寄生”、“剪尾捕蝇器”},
{“俄勒冈州”、“俄勒冈州葡萄”、“西部草地云雀”},
{“宾夕法尼亚州”、“山月桂”、“皱褶松鸡”},
{“罗德岛”,“紫罗兰”,“罗德岛红鸡”},
{“南卡罗来纳州”,“黄色杰西明”,“卡罗莱纳鹪鹩”},
{“南达科他州”、“美国帕斯克”、“环颈雉”},
{“田纳西州”、“艾里斯”、“北方知更鸟”},
{“得克萨斯州”、“蓝帽州”、“北方知更鸟”},
{“犹他州”、“塞戈百合”、“加利福尼亚海鸥”},
{“佛蒙特州”、“红三叶草”、“隐士画眉鸟”},
{“弗吉尼亚”,“美国山茱萸”,“北方红衣主教”},
{“华盛顿”,“海岸杜鹃”,“柳树金翅雀”},
{“西弗吉尼亚”、“杜鹃花”、“北红衣主教”},
{“威斯康星州”,“木紫罗兰”,“美国知更鸟”},
{“怀俄明州”、“印度画笔”、“西部草地云雀”},
};
public void findState(){
对于(i=0;i<50;i++){
if(userInput==stateInfo[i][0]){
output=“State:“+stateInfo[i][0]+”/n“+”Flower:“+stateInfo[i][1]+”/n“+”Bird:“+stateInfo[i][2];
}
}
}
public void setUserInput(字符串userInput){
this.userInput=userInput;
}
公共字符串getOutput(){
返回输出;
}
}
类Main扩展StateInfo{
公共静态void main(字符串[]args)引发IOException{
StateInfo newState=newstateinfo();
BufferedReader myReader=新的BufferedReader(新的InputStreamReader(System.in));
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class StateInfo{
private int counter;
private int i;
private int summary[];
public String output;
private String userInput;
// 50 states, each index with 3 entries (state, bird, flower)
//String[][] stateInfo = new String[50][3];
String stateInfo[][] = {
{"Alabama", "Camellia", "Yellowhammer"},
{"Alaska", "Alpine Forget-me-not", "Willow Ptarmigan"},
{"Arizona", "Saguaro Cactus Blossom", "Cactus Wren"},
{"Arkansas", "Apple Blossom", "Mockingbird"},
{"California", "California Poppy", "California Quail"},
{"Colorado", "Rocky Mountain Columbine", "Lark Bunting"},
{"Connecticut", "Mountain Laurel", "American Robin"},
{"Delaware", "Peach Blossom", "Blue Hen Chicken"},
{"Florida", "Orange Blossom", "Northern Mockingbird"},
{"Georgia", "Cherokee Rose", "Brown Thrasher"},
{"Hawaii", "Pua Aloalo", "Hawaiian Goose"},
{"Idaho", "Syringa", " Mountain Bluebird"},
{"Illinois", "Violet", "Northern Cardinal"},
{"Indiana", "Peony", "Northern Cardinal"},
{"Iowa", "Wild Rose", " Eastern Goldfinch"},
{"Kansas", "Wild Native Sunflower", "Western Meadowlark"},
{"Kentucky", "Goldenrod", "Northern Cardinal"},
{"Louisiana", "Louisiana Iris", "Brown Pelican"},
{"Maine", "White Pine Cone and Tassel", "Black-capped Chickadee"},
{"Maryland", "Black-Eyed Susan","Baltimore Oriole"},
{"Massachussets", "Mayflower", "Black-capped Chickadee"},
{"Michigan", "Dwarf Lake Iris", "American Robin"},
{"Minnesota", "Pink & White Lady Slipper", "Common Loon"},
{"Mississippi", "Coreopsis", "Northern Mockingbird"},
{"Missouri", "White Hawthorn Blossom", "Eastern Bluebird"},
{"Montana", "Bitterroot", "Western Meadowlark"},
{"Nebraska", "Goldenrod", "Western Meadowlark"},
{"Nevada", "Sagebrush", "Mountain Bluebird"},
{"New Hampshire", "Pink Lady's Slipper", "Purple Finch"},
{"New Jersey", "Violet", "Eastern Goldfinch"},
{"New Mexico", "Yucca", "Roadrunner"},
{"New York", "Rose", "Eastern Bluebird"},
{"North Carolina", "Dogwood","Northern Cardinal"},
{"North Dakota", "Wild Prairie Rose", "Western Meadowlark"},
{"Ohio", "White Trillium", "Northern Cardinal"},
{"Oklahoma", "Mistletoe", "Scissor-tailed Flycatcher"},
{"Oregon", "Oregon Grape", "Western Meadowlark"},
{"Pennsylvania", "Mountain Laurel", "Ruffed Grouse"},
{"Rhode Island", "Violet", "Rhode Island Red Chicken"},
{"South Carolina", "Yellow Jessamine", "Carolina Wren"},
{"South Dakota", "American Pasque", "Ring-necked Pheasant"},
{"Tennessee", "Iris", "Northern Mockingbird"},
{"Texas", "Bluebonnet", "Northern Mockingbird"},
{"Utah", "Sego Lily", "California Gull"},
{"Vermont", "Red Clover", "Hermit Thrush"},
{"Virginia", "American Dogwood", "Northern Cardinal"},
{"Washington", "Coast Rhododendron", "Willow Goldfinch"},
{"West Virginia", "Rhododendron", "Northern Cardinal"},
{"Wisconsin", "Wood Violet", "American Robin"},
{"Wyoming", "Indian Paintbrush", "Western Meadowlark"},
};
public void findState() {
for (i = 0; i < 50; i++){
if (userInput == stateInfo[i][0]){
output = "State: " + stateInfo [i][0] + "/n" + "Flower: " + stateInfo [i][1] + "/n" + "Bird: " + stateInfo [i][2];
}
}
}
public void setUserInput(String userInput) {
this.userInput = userInput;
}
public String getOutput() {
return output;
}
}
class Main extends StateInfo{
public static void main(String[] args) throws IOException{
StateInfo newState = new StateInfo();
BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a State or None to exit:");
//assigns user input to a variable for later use
String input = myReader.readLine();
//while loop to check the value of input and will not be entered if input = "none"
while(input != "none"){
//assigns the value of input to userInput from a newState instance
newState.setUserInput(input);
//trys to call the findState method. Find state method takes userInput (which should be = to input) and builds a string based on indexes from the 2d array
newState.findState();
//getter method for output. I want to get the new string that I built for output
newState.getOutput();
//ending first iteration of the while loop, begins another with a new assignment of input. If input = none, while loop exits and prints thank you to the screen
System.out.println("Enter a State or None to exit:");
input = myReader.readLine();
}
System.out.println("***** Thank you *****");
}
}