我有一个接受键盘输入的类,我该如何制作它,以便它可以在一行上接受多个double和char输入,例如12 a a a,然后获得输出:
"1〃"2〃"a"a"a";把它分成单独的字符串?这就是我迄今为止所做的:
public class MyInputInfo implements Comparable <MyInputInfo> {
public static double numeric;
public static char symbol;
public MyInputInfo(double numeric, char symbol) {
this.numeric = numeric;
this.symbol = symbol;
}
public static char getSymbol() {
int asciiValue = 97;
for (int i = asciiValue; i <= 122; i++) {
String convertedChar = Character.toString ((char) i);
System.out.println (convertedChar);
}
return symbol;
}
@Override
public int compareTo(MyInputInfo o) {
if (this.numeric < o.numeric) {
return 1;
} else if (this.getSymbol( ) < o.getSymbol ( )) {
return -1;
} else {
return 0;
}
}
@Override
public String toString() {
return "Numeric " + numeric + " Symbol " + symbol;
}
}
我现在正在学习的课程
import java.util.*;
public class MyKeyboardInput {
public static void main(String[] args) {
Scanner s = new Scanner (System.in);
MyInputInfo.numeric = s.nextDouble();
MyInputInfo.symbol = s.next ( ).charAt (0);
System.out.println (MyInputInfo.numeric+ "," + MyInputInfo.symbol);
}
}
我是java的新手,所以很抱歉表现得这么慢。感谢所有的帮助!
有两个选项:
- 按可预测的顺序获取数字和字符
- 按随机顺序获取数字和字符
按可预测的顺序获取数字和字符
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number of iterations: ");
int count = scanner.nextInt();
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < count; i++) {
System.out.print("nEnter a floating point number: ");
buffer.append(scanner.nextDouble() + " ");
System.out.print("nEnter a character: ");
buffer.append(scanner.next().charAt(0) + " ");
}
scanner.close();
String output = buffer.toString().trim().replaceAll(" ", ", ");
System.out.println(output);
}
如果输入1 a 2 b 3 c 4 d 5 e
,输出将类似于此
1.0, a, 2.0, b, 3.0, c, 4.0, d, 5.0, e
就这么简单。关键是使用CCD_;阶段";输入,然后将所有单独的输入转换为单个CCD_ 3输出。为了更容易地删除最后一个逗号,我只是用空格分隔条目,修剪字符串以删除最后的空格,然后在剩余的空格前加上逗号。
按随机顺序获取数字和字符
这个解决方案是类似的,但在这种情况下,只需将输入捕获为String
,然后判断输入是否为数字。如果它不是数字,那么它就是一个字符。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number of iterations: ");
int count = scanner.nextInt();
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < count; i++) {
System.out.print("nEnter a number or character: ");
String s = scanner.next();
try {
Double num = Double.parseDouble(s);
buffer.append(num + " ");
} catch (NumberFormatException nfe) {
buffer.append(s.charAt(0) + " ");
}
}
scanner.close();
String output = buffer.toString().trim().replaceAll(" ", ", ");
System.out.println(output);
}
注意事项
你需要弄清楚当类似";字符";被提供作为输入。正如您在代码中看到的,该代码仅捕获charAt(0)
。这可能对您的使用正确,也可能不正确。但是,这是通常在web上的描述方式如何在Java中从Scanner中获取字符。
此外,如果输入不是数字,则不会对第一个解决方案进行错误处理。如果输入的字符不是数字,您可以尝试再次提示。同样,当提示输入字符时,如果输入是数字,会发生什么?您将需要调整代码以实现您想要的功能。使用第二种方法,您不必担心这一点。