【发布时间】:2014-02-24 19:04:47
【问题描述】:
我正在尝试在分数之间做一个计算器,如果用户输入 +、-、* 或 / 它将在这种情况下对应。这是我到目前为止的代码:
import java.util.Scanner;
public class calculator
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String x,y;
System.out.println("Enter first fraction in a / b form: ");
x = input.nextLine();
System.out.println("Enter operation: ");
char z = input.next().charAt(0);
System.out.println("Enter second fraction in c / d form: ");
y = input.nextLine();
String aString = x.substring(0,1);
String bString = x.substring(4,5);
String cString = x.substring(0,1);
String dString = x.substring(4,5);
int a = Integer.parseInt(aString);
int b = Integer.parseInt(bString);
int c = Integer.parseInt(cString);
int d = Integer.parseInt(dString);
int answer = 0;
switch (z)
{
case '+':
answer = (a/b) + (c/d);
break;
case '-':
answer = (a/b) - (c/d);
break;
case '*':
answer = (a/b) * (c/d);
break;
case '/':
answer = (a/b) /(c/d);
break;
default:
System.out.println("ERROR");
break;
}
System.out.println("Answer = " + answer);
}
}
输出应该是
Enter first fraction in a / b form:
1 / 2
Enter operation:
+
Enter second fraction in c / d form:
2 / 5
answer = 9/10
【问题讨论】:
-
您遇到了什么问题?输出错误?错误信息?请分享。
-
特别是,这里没有实际问题的迹象...
-
你的开关没问题,@AJ。指出了一个逻辑错误,但是您有一个更大的问题,即要输出一个分数,您需要执行fraction arithmetic。您可以使用 double 进行计算,这样您就不会以 0 结尾,但会得到一个十进制数。
-
我做了@AJ 所说的更改,但是当我输入“+”时我得到了这个:线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:java.lang 中的 1 .String.substring(String.java:1907) 在calculator.main(calculator.java:33)