0

ユーザーが入力したフィートとインチを追加する add メソッドを作成する必要があります。ユーザーは任意の整数をフィートまたはインチで入力して戻すことができますが、値を追加する必要があります。どうすればそれに近づくことができるか正確にはわかりません。どんな助けでも素晴らしいでしょう!

以下は私のコードです:

import java.util.Scanner;
public class MixWithUnit_JM {
 Fraction_JM a;
int first;
 int second;

public String displayMixWithUnit_JM() {
  String str="";
  if (first == 0) str= first%second+"/"+second+"in";
  else if (first%second == 0) str= ""+first/second+"ft";
  else if (first < second) str=first+"/"+second+"in"; 
  else str= first/second+"ft" +" "+ first%second+"/"+second+"in"; 
  return str; 
}//display


public MixWithUnit_JM(String str) {
  int pos = str.indexOf("ft");
  int pos2 = str.indexOf("in"); 
  String a1 = "";
  String a2 ="";
  String b1 = "";
  String b2 ="";
  String b3 ="";

  if(pos == -1){
     a2 = str.substring(0,pos2 +2).trim();
     b2 = str.substring(0,pos2);
     b3 = b2;
  }
  else if(pos2 == -1){
     a1 = str.substring(0,pos +2);
     b1 = str.substring(0, pos);
     b3 = b1; 
  }
  else{
     a1 = str.substring(0,pos +2);
     b1 = str.substring(0, pos);
     a2 = str.substring(pos +2).trim();
     b2 = str.substring(pos+2, str.length()-2);
     b3 = b1 + b2; 
  }

  int[] iA= parse (b3);
  int top=iA[0]*iA[2]+iA[1];
  int bot= iA[2];
  a = new Fraction_JM (top,bot);
  int gcd = a.gcd(top,bot);
  first=top/gcd; 
  second =bot/gcd;
 }//Mix




 public static String get (){
  Scanner scan = new Scanner (System.in);
  String userInput = scan.nextLine();
  userInput =userInput.trim();
  return (userInput);

 } //get


 public static int[] parse (String userInput){
  int iNum = 0;
  int iTop = 0;
  int iBot = 1;

  userInput = userInput.trim();
  int pos = userInput.indexOf(" "); 
  int pos2 = userInput.indexOf("/");   

  if (pos == -1 && pos2 != -1){
     pos= userInput.indexOf("/"); 
     String sTop=userInput.substring(0,pos);
     iTop = Integer.parseInt(sTop);//second integer
     String sBot=userInput.substring(pos+1);
     iBot = Integer.parseInt(sBot);//third integer
     //case 2

     }
    else if (pos == -1 && pos2== -1) {
     iNum = Integer.parseInt(userInput);//first integer
     //case 1
     }
    else{
     String sNum=userInput.substring(0,pos);
     iNum = Integer.parseInt(sNum);//first integer

     String sNum2=userInput.substring(pos+1);
     pos= sNum2.indexOf("/");
     String sTop=sNum2.substring(0,pos);
     iTop = Integer.parseInt(sTop);//second integer

     String sBot=sNum2.substring(pos+1);
     iBot = Integer.parseInt(sBot);//third integer
   }
   int[] sA = {iNum,iTop,iBot};
   return (sA);        
 } //parse


 public static void main(String[] args) {
  System.out.print("Please enter a mixed-format number :");
  String userInput = MixWithUnit_JM.get();
  System.out.println("Input is: "+userInput);  
  MixWithUnit_JM s = new MixWithUnit_JM(userInput);
  s.displayMixWithUnit_JM();

  System.out.print("Please enter a mixed-format number :");
  userInput = MixWithUnit_JM.get();
  System.out.println("Input is: "+userInput);
  MixWithUnit_JM s2 = new  MixWithUnit_JM(userInput);  
  s2.displayMixWithUnit_JM();


 }//main
}//class

プログラムが実行されます。必要なのは add メソッドだけです。

4

1 に答える 1

0

標準入力からの読み取りにはSystem.in.read()を使用する必要があります。この投稿で詳細情報を見つけることができます: System.in.read は実際に何を返しますか?

于 2013-10-07T07:07:15.100 に答える