试图检索包含空格的字符串的最后一个字母
Trying to retrieve the last letter of a String which includes spaces
是的,所以我在尝试使用 .substring 检索最后一个字母时遇到了一点困难。例如,如果我输入“100C”,它将正常工作并且变量 celOrFar 将 = "C"。然而,用户应该在数字后插入一个 space,但这样做会给我一个不正确的结果。 “100 C”会给我“0”而不是 C,而“1234 5678C”会给我 4!我仍然是 Java 的初学者,所以非常感谢您的帮助!
public static void stateOfWater() {
System.out.println("Enter a temperature followed by a space and C / F: ");
String userInput = input.next();
String celOrFar = userInput.substring(userInput.length()-1);
String degreeString = userInput.trim();
degreeString = degreeString.replace("C", "");
degreeString = degreeString.replace("F", "");
degreeString = degreeString.replace("f", "");
degreeString = degreeString.replace("c", "");
int degree = Integer.parseInt(degreeString);
if (celOrFar.equals("C")|| celOrFar.equals("c")) {
if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}
if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}
}
if (celOrFar.equals("F") || celOrFar.equals("f")) {
if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}
if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}
}
}
scanner.next
读取字符,直到遇到 space。如果你想阅读包含 space 的完整行,那么你需要使用 nextLine
。见下文。
public static void stateOfWater() {
System.out.println("Enter a temperature followed by a space and C / F: ");
String userInput = input.nextLine(); // this will read the complete line including spaces.
String celOrFar = userInput.substring(userInput.length()-1);
String degreeString = userInput.trim();
degreeString = degreeString.replace("C", "");
degreeString = degreeString.replace("F", "");
degreeString = degreeString.replace("f", "");
degreeString = degreeString.replace("c", "");
int degree = Integer.parseInt(degreeString);
if (celOrFar.equals("C")|| celOrFar.equals("c")) {
if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}
if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}
}
if (celOrFar.equals("F") || celOrFar.equals("f")) {
if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}
if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}
}
}
是的,所以我在尝试使用 .substring 检索最后一个字母时遇到了一点困难。例如,如果我输入“100C”,它将正常工作并且变量 celOrFar 将 = "C"。然而,用户应该在数字后插入一个 space,但这样做会给我一个不正确的结果。 “100 C”会给我“0”而不是 C,而“1234 5678C”会给我 4!我仍然是 Java 的初学者,所以非常感谢您的帮助!
public static void stateOfWater() {
System.out.println("Enter a temperature followed by a space and C / F: ");
String userInput = input.next();
String celOrFar = userInput.substring(userInput.length()-1);
String degreeString = userInput.trim();
degreeString = degreeString.replace("C", "");
degreeString = degreeString.replace("F", "");
degreeString = degreeString.replace("f", "");
degreeString = degreeString.replace("c", "");
int degree = Integer.parseInt(degreeString);
if (celOrFar.equals("C")|| celOrFar.equals("c")) {
if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}
if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}
}
if (celOrFar.equals("F") || celOrFar.equals("f")) {
if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}
if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}
}
}
scanner.next
读取字符,直到遇到 space。如果你想阅读包含 space 的完整行,那么你需要使用 nextLine
。见下文。
public static void stateOfWater() {
System.out.println("Enter a temperature followed by a space and C / F: ");
String userInput = input.nextLine(); // this will read the complete line including spaces.
String celOrFar = userInput.substring(userInput.length()-1);
String degreeString = userInput.trim();
degreeString = degreeString.replace("C", "");
degreeString = degreeString.replace("F", "");
degreeString = degreeString.replace("f", "");
degreeString = degreeString.replace("c", "");
int degree = Integer.parseInt(degreeString);
if (celOrFar.equals("C")|| celOrFar.equals("c")) {
if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}
if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}
}
if (celOrFar.equals("F") || celOrFar.equals("f")) {
if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}
if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}
if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}
}
}