这是我在这里的第一篇文章。 我非常擅长编程,一周前开始学习java,但到目前为止它非常令人兴奋。
我想听听您对此代码的反馈。 基本上我希望它在输入名称后输出州名的缩写,反之亦然...
有没有更有效的方法来写这个? (高效至少机器处理代码的时间)
import java.util.Scanner;
class apples2{
public static void main(String[] args){
Scanner inputStateName = new Scanner(System.in);
System.out.println("Input the state name or abbreviation: ");
String stateName = inputStateName.nextLine();
for(int counter = 0; counter <= statedata.states.length; counter++){
if(stateName.equalsIgnoreCase(statedata.states[counter])){
System.out.println("The abbreviation of your state is: " + statedata.statesAb[counter]);
break;
}
if(stateName.equalsIgnoreCase(statedata.statesAb[counter])){
System.out.println("You've entered an abbreviation, the state for that is: " + statedata.states[counter]);
break;
}
}
}
}
&#34; statedata.states&#34;是一个包含另一个类中所有州名的数组,&#34;声明数据.statesAb&#34;是一个缩写数组。
答案 0 :(得分:2)
无论您使用枚举还是标准类,重要的一点是您不应该有两个长度相同的数组包含缩写和名称。你应该将你作为一个阶段处理的概念建模。
您的计划涉及各州。状态有缩写和名称,因此您应该有一个具有两个属性的类State
:name和abbreviation。还有一个State
个数组。
例如,如果您需要按名称对状态进行排序,这就变得至关重要。如何保持缩写数组的顺序与名称数组的顺序相同。这很难。但是如果名称和缩写在一个对象中保存在一起,按名称对单个对象数组进行排序,则会将缩写保留为名称。
所以,简而言之,Java是一种面向对象的语言,因此您应该定义自己的类来模拟您正在处理的功能域。
答案 1 :(得分:1)
有多种方法可以对解决方案进行建模。 Java Map非常适合,因为它允许您拥有键值对(即,您可以将状态缩写作为键和状态名称作为值)。它还允许您快速检查给定键是否存在,方法 containsKey(),或者如果Map中存在给定值,方法 conatinsValue()。这是一个可以用来推进学习的简单例子。
public class StateTest {
public static void main(String... args)
{
Map<String, String> statesMap = new HashMap<>();
statesMap.put("Ala", "Alabama");
statesMap.put("Alaska", "Alaska");
statesMap.put("Calif", "California");
statesMap.put("Tex", "Texas");
statesMap.put("Va", "Virginia");
//... add more states here
Scanner inputState = new Scanner(System.in);
System.out.println("Input the state name or abbreviation: ");
String state = inputState.nextLine();
if(statesMap.containsKey(state))
{
System.out.println("You've entered an abbreviation, the state for that is: "+statesMap.get(state));
}
else if(statesMap.containsValue(state))
{
for(Map.Entry<String, String> stateEntry : statesMap.entrySet())
{
if(state.equals(stateEntry.getValue()))
System.out.println("The abbreviation of your state is: " +stateEntry.getKey());
}
} else {
System.out.println("No such state.");
}
}
}
有没有更有效的方式来写这个? (在机器处理代码的最短时间内效率很高)尝试以其他方式对解决方案进行建模,然后搜索给定状态并查看搜索是更快还是更慢。检查此link有关如何计算方法执行时间的方法。快乐学习。