【发布时间】:2017-02-28 11:57:13
【问题描述】:
我将首先包含我得到的内容。
import java.util.Scanner;
// Creates a class called presidents
public class presidents3{
// Initilaizes an object called input using the Scanner that is public.
public static Scanner input = new Scanner(System.in);
// Initializes a public static String variable called strInfo.
public static String strInfo;
// Initializes a public int variables number.
public static int number;
// Creates a main method that doesn't return anything.
public static void main(String[] args){
// Initilaizes a String multidimensional array that holds the information about the presidents.
String presidents[][] = {
{"1 ","George"," ","Washington"," (1789-1797) ","John Adams"},
{"2 ","John"," ","Adams"," (1797-1801) ","Thomas Jefferson"},
{"3 ","Thomas"," ","Jefferson"," (1801-1809) ","Aaron Burr"},
{"4 ","James"," ","Madison"," (1809-1817) ","George Clinton"},
{"5 ","James"," ","Monroe"," (1817-1825) ","Daniel D. Tompkins"},
{"6 ","John"," Quincy ","Adams"," (1825-1829) ","John C. Calhoun"},
{"7 ","Andrew"," ","Jackson"," (1829-1837) ","John C. Calhoun"},
{"8 ","Martin"," Van ","Buren"," (1837-1841) ","Richard M. Johnson"},
{"9 ","William"," Henry ","Harrison"," (1841) ","John Tyler"},
{"10 ","John"," ","Tyler"," (1841-1845) ","None"},
{"11 ","James"," K. ","Polk"," (1845-1849) ","George M. Dallas"},
{"12 ","Zachary"," ","Taylor"," (1849-1850) ","Millard Fillmore"},
{"13 ","Millard"," ","Fillmore"," (1850-1853) ","None"},
{"14 ","Franklin"," ","Pierce"," (1853-1857) ","William King"},
{"15 ","James"," ","Buchanan"," (1857-1861) ","John C. Breckinridge"},
{"16 ","Abraham"," ","Lincoln"," (1861-1865) ","Hannibal Hamlin"},
{"17 ","Andrew"," ","Johnson"," (1865-1869) ","None"},
{"18 ","Ulysses"," S. ","Grant"," (1869-1877) ","Schuyler Colfax"},
{"19 ","Rutherford"," B. ","Hayes"," (1877-1881) ","William Wheeler"},
{"20 ","James"," A. ","Garfield"," (1881) ","Chester Arthur"},
{"21 ","Chester"," ","Arthur"," (1881-1885) ","None"},
{"22 ","Grover"," ","Cleveland"," (1885-1889) ","Thomas Hendricks"},
{"23 ","Benjamin"," ","Harrison"," (1889-1893) ","Levi P. Morton"},
{"24 ","Grover"," ","Cleveland"," (1893-1897) ","Adlai E. Stevenson"},
{"25 ","William"," ","McKinley"," (1897-1901) ","Garret Hobart"},
{"26 ","Theodore"," ","Roosevelt"," (1901-1909) ","None"},
{"27 ","William"," Howard ","Taft"," (1909-1913) ","James S. Sherman"},
{"28 ","Woodrow"," ","Wilson"," (1913-1921) ","Thomas R. Marshall"},
{"29 ","Warren"," G. ","Harding"," (1921-1923) ","Calvin Coolidge"},
{"30 ","Calvin"," ","Coolidge"," (1923-1929) ","None"},
{"31 ","Herbert"," ","Hoover"," (1929-1933) ","Charles Curtis"},
{"32 ","Franklin"," D. ","Roosevelt"," (1933-1945) ","John Nance Garner"},
{"33 ","Harry"," S. ","Truman"," (1945-1953) ","None"},
{"34 ","Dwight"," D. ","Eisenhower"," (1953-1961) ","Richard Nixon"},
{"35 ","John"," F. ","Kennedy"," (1961-1963) ","Lyndon B. Johnson"},
{"36 ","Lyndon"," B. ","Johnson"," (1963-1969) ","None"},
{"37 ","Richard"," ","Nixon"," (1969-1974) ","Spiro Agnew"},
{"38 ","Gerald"," ","Ford"," (1974-1977) ","Nelson Rockefeller"},
{"39 ","Jimmy"," ","Carter"," (1977-1981) ","Walter Mondale"},
{"40 ","Ronald"," ","Reagan"," (1981-1989) ","George Bush"},
{"41 ","George"," ","Bush"," (1989-1993) ","Dan Quayle"},
{"42 ","Bill"," ","Clinton"," (1993-2001) ","Al Gore"},
{"43 ","George"," W. ","Bush"," (2001-2009) ","Dick Cheney"},
{"44 ","Barack"," ","Obama"," (2009-2017) ","Joe Biden"},
};
President[] President = new President[44];
// Welcomes user and asks for input which will appear on the same line that asks for your input.
System.out.println("This will display the President and VP of the United States based on the number you provide.");
System.out.print("Please enter a number between 1 and 44 to see information or q to quit: ");
strInfo = input.nextLine();
// Creates a while loop and checks if the strInfo equals q.
while (!strInfo.equals("q")){
// Calls the isInteger method and passes the strInfo and sees if strInfo can become an int.
if (isInteger(strInfo)){
// If the boolean is true, number will be set to Integer.parseInt(strInfo) which converts the String to int.
number = Integer.parseInt(strInfo);
if (number >= 1 && number <= 44){
// Prints out the information.
President President = new President ("1 ","George"," ","Washington"," (1789-1797) ","John Adams");
System.out.println();
System.out.println(Presidents.toString());
System.out.println();
// Asks for input once again
System.out.print("Please enter a number between 1 and 44 to see information or q to quit: ");
strInfo = input.nextLine();
}else{
// Asks for input once again when you have entered an invalid number.
System.out.println();
System.out.print("Wrong Input! Please enter number 1-44 or q to quit: ");
strInfo = input.nextLine();
}
}else{
// Asks for input once again when you have entered an invalid number and a String that is not q.
System.out.println();
System.out.print("Wrong Input! Please enter number 1-44 or q to quit: ");
strInfo = input.nextLine();
}
}
// Happens after you input q.
System.out.println();
System.out.println("This program has been terminated. Good Bye!");
}
// Creates a boolean method isInteger that takes the strInfo and checks if it can become an integer.
public static boolean isInteger(String strInfo){
// Attempts to convert strInfo to int and looks for something to catch. If it is null or not a number it will return false.
try{
Integer.parseInt(strInfo);
}catch(NumberFormatException e){
return false;
}catch(NullPointerException e){
return false;
}
// If false wasn't returned at all during this method, true will be returned.
return true;
}
}
其他类:
public class President{
String number;
String firstName;
String middleName;
String lastName;
String years;
String vicePresident;
public President(String num, String fName, String mName, String lName, String yrs, String vp){
number = num;
firstName = fName;
middleName = mName;
lastName = lName;
years = yrs;
vicePresident = vp;
}
public String toString(){
return String.format("Our %s was %s %s %s. /n He was in office from %s. /n His Vice President was %s.", this.number, this.firstName, this.middleName, this.lastName, this.years, this.vicePresident);
}
}
这是我作为项目的一部分尝试做的事情。我被指示在两节课内完成。我正在尝试通过一个构造函数创建一个对象数组,该构造函数保存我拥有的数据数组中的信息,并使用 toString() 方法正确格式化它以说第 n 任总统是总统。然后是年,然后是副总裁。我可以根据要求进行更多描述。我仍然需要它来处理输入,并且仍然拒绝任何不是 1-44 或“q”的东西。有没有人有任何想法或知道它应该是什么样子或者我缺少什么来使它工作?任何帮助将不胜感激。
【问题讨论】:
-
当前代码产生的行为是什么?
-
现在第二个类什么也不做,但它目前接受字符串输入来显示总统的信息以及 q。我正在尝试通过另一个类创建一个对象数组,并使用 toString() 方法使用 this 关键字正确格式化它。
-
为什么你的代码中的所有内容都是
static? -
我只是更习惯于写静态。这样做实际上有什么问题吗?我使用
static和我离开static有什么区别?
标签: java arrays object multidimensional-array bluej