感谢您尝试帮助我。
我正在开发的程序应该要求一个人输入英尺和英寸
2' 2 2/2"
<---(此格式)
但是,我想不出一种方法来实现这种用户输入。
该计划由三个班级组成
- 分数
- 一对
- 混合
爪哇:
import java.util.Scanner;
class Mix extends Fraction {
public Mix ( int n, int m) {
super (n,m);
}
public String displayMix() {
String str="";
if (first < second)
str=first+ "'" + first%second +"/"+second+"\"";
else
str=first+"'" +(first+second)+"/"+second+"\"";
return str;
} //display
public static String get () {
Scanner scan = new Scanner(System.in);
System.out.print("Please enter a mixed-format number:");
String userInput = scan.nextLine();
userInput = userInput.trim();
System.out.println("Input is: "+ userInput);
return (userInput);
} //get
public static void main(String [] args) {
String userInput;
int[]iA = {0,0,0,1};
userInput = Mix.get();
iA=parse(userInput);
Mix f = new Mix ( iA[0] , (iA[1]*iA[2])+(iA[3]) );
System.out.println("Number = " + f.displayMix());
userInput = Mix.get();
iA=parse(userInput);
Mix g = new Mix ( iA[0] , iA[1] * iA[3] + iA[2]);
System.out.println("Number = " + g.displayMix());
Mix h = Mix.add (f,g);
System.out.println("Sum ="+ h.displayMix());
} // main
public static Mix add (Mix f, Mix g) {
int gtop= f.first+g.first;
int gbottom= f.second+g.second;
return(new Mix ( gtop, gbottom));
} //add
public static int[] parse (String userInput) {
int [] sA = {0,0,0,1};
int pos = userInput.indexOf("'");
String sNum0 = userInput.substring(0,pos);
pos = userInput.indexOf("'");
sA[0]= Integer.parseInt(sNum0);
String sNum = userInput.substring(0,pos);
pos = sNum.indexOf(" ");
sA[1]= Integer.parseInt(sNum);
String sNum2 = userInput.substring(pos + 1);
pos = sNum2.indexOf("/");
String sTop= sNum2.substring (pos +3);
pos = sNum2.indexOf("\"");
sA[2] = Integer.parseInt(sTop);
String sBot = sNum2.substring(pos +1);
sA[3] = Integer.parseInt(sBot);
// 2' 2 2/2
return (sA);
}
} //parse
输入后我设法得到结果
2' 2 2/2"1
我不知道我做错了什么,但有些东西不对劲,因为我需要在 " 后面加上一个数字才能得到结果。
我很确定解析方法有问题,我只是不知道它在哪里。
这是分数类
public class Fraction extends Pair {
//attributes: NONE
public Fraction(int n, int m) {
super(n,m);
int g=gcd(n,m);
first = first;
second=second/g;
} //Fraction
public void display2() {
System.out.print(first);
System.out.print("/");
System.out.println(second);
} //display
public Fraction add (Fraction f1, Fraction f2) {
int gtop=f1.first * f2.second
+ f2.first * f1.second;
int gbottom= f1.second * f2.second;
return (new Fraction(gtop,gbottom));
}
public static int gcd (int n, int m) {
while ( n!=m) {
if (n>m) n=n-m;
else m=m-n;
} //while
return (n);
} //gcd
} //class
这是对类
public class Pair {
int first;
int second;
public Pair(int n, int m) {
first=n;
second=m;
} //Pair
public void display() {
//pseudo_code is here
System.out.print("First integer="+first);
System.out.println();
System.out.println("Second integer="+second);
} //display
public static void main(String[] args) {
//pseudo-code is here
Pair f= new Pair(2,4);
f.display();
} //main
} //class