我有一项任务,要求提供一种我不熟悉的输入形式。它要求输入是一个字符串,我们必须从该字符串中拉出一个int和double。我无法弄清楚如何使用所需的输入语句“console.nextDouble()”和“console.nextInt()”来完成此操作。我包括了下面说明的相关部分和我编写的代码。任何有关如何编写这些内容的见解都会有所帮助。
说明:在这一部分获得最多5分 分配时,您的程序必须接受输入为4个令牌并验证 输入采用适当的格式。第一个令牌将是 “金额”或“年”(不含报价)。如果第一个令牌是 “金额”,下一个是贷款金额,应该读入 使用console.nextDouble()。如果第一个令牌是“年”,则下一个 token是年数,应该用 console.nextInt()。如果第一个标记是“金额”,则为第三个标记 应该是“年”,并将年数作为第四个读入 使用console.nextInt()的令牌。如果第一个令牌是“年”,那么 第三个标记应该是“金额”,金额应该用 console.nextDouble()。任何其他令牌都被视为无效输入。
public static void main(String[] args) {
final Scanner console = new Scanner(System.in);
System.out.println("Project 2 written by KC");
System.out.println();
System.out.println("Enter the loan amount and loan duration in years,\nfor example amount 3000 years 2");
String input = console.nextLine();
String[] parts = input.split(" ");
String part1 = parts[0];
String part2 = parts[1];
String part3= parts[2];
String part4 = parts[3];
if (part1.equals("amount")) {
double amount = console.nextDouble(part2);
int years = console.nextInt(part4);
} else if (part1.equalsIgnoreCase("years")){
int years = console.nextInt(part2);
double amount = console.nextDouble(part4);
}
int years= console.nextInt();
double rate = loanRate(amount);
System.out.println("Loan Amount: "+ customFormat(amount));
System.out.println("Loan Period: " + years + " years");
System.out.println("Loan Rate: " + rate + "%");
System.out.println("Monthly Payment: " + customFormat(loanMonthlyPayment(amount, years, rate)));
System.out.println("Month" + padOnLeft("Balance", 15) + padOnLeft("Payment", 15) + padOnLeft("Remaining", 15));
System.out.println("Total Payment Amount: " + customFormat(loanTotalPayment(amount, years, rate, (loanMonthlyPayment(amount, years, rate)))));
}
}
答案 0 :(得分:0)
改变这个:
String input = console.nextLine();
要:
String input = console.next();
next()
应该采用字符串类型。
根据http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html:
public String next(模式模式)
如果匹配指定的模式,则返回下一个标记。这个 方法可能会在等待输入扫描时阻塞,即使是先前的 hasNext(Pattern)的调用返回true。如果匹配 成功后,扫描仪会超过与之匹配的输入 图案。
参数: pattern - 要扫描的模式返回: 下一个标记抛出: NoSuchElementException - 如果没有更多令牌可用 IllegalStateException - 如果此扫描程序已关闭
答案 1 :(得分:0)
这是你的问题。你想使用Scanner从一个句子中提取单词并得到整数和双值。你试试这个片段。我修改了你的部分代码。: -
Scanner scan=new Scanner(System.in);
System.out.println("Enter the string:-");
String st=scan.nextLine();
Scanner sc=new Scanner(st);
String arr[]=new String[4];
int i=0;
double val=0;
int n=0;
while(i<4){
String st1=sc.next();
arr[i]=st1;
i++;
}
if(arr[0].equalsIgnoreCase("amount")){
n=Integer.parseInt(arr[3]);
val=Double.parseDouble(arr[1]);
}
if(arr[0].equalsIgnoreCase("years")){
val=Double.parseDouble(arr[3]);
n=Integer.parseInt(arr[1]);
}