2015-05-26 2 views
0

Я пытаюсь взять 3 разных программы, которые я создал, и поместить их под один класс. Мой профессор заявил, что я должен это сделать, и я не знаю, как это сделать. Я не ищу здесь свою руку, просто некоторые, как я могу сделать это быстро и эффективно. Я также пытаюсь понять, как звонить из одного и того же сканера для каждой программы, или я должен просто сделать несколько.Попытка объединить несколько программ вместе

import java.util.Scanner; 
public class AssignmentOneFahrenheit { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    System.out.println("Hello, I can convert Fahrenheit to Celsius!"); 
    System.out.println("Please enter the degrees Fahrenheit you want converted."); 

    double degreesF; 
    double degreesC; 

    Scanner keyboard = new Scanner(System.in); 

    degreesF = keyboard.nextDouble(); //Allows user to input decimal number 
    keyboard.close(); 
    System.out.println("The temperature in Degrees Celsius is: "); 
    degreesC = 5*(degreesF - 32)/9; 
    System.out.printf("%.2f", degreesC); 
} 

import java.util.Scanner; 
public class AssignmentOneHate { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please enter a line containing 'hate'."); 
    String text = keyboard.nextLine(); 

    System.out.println("I have changed that line to read: "); 
    System.out.println(text.replaceFirst("hate", "love")); 
    keyboard.close(); 
} 


import java.util.Scanner; 
public class AssignmentOneVerticalDisplay { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    int userInput; 

    System.out.println("Please enter a 4 digit integer."); 

    Scanner keyboard = new Scanner(System.in); 

    userInput = keyboard.nextInt(); 
    System.out.println(userInput/1000); 
    userInput = userInput % 1000; 
    System.out.println(userInput/100); 
    userInput = userInput % 100; 
    System.out.println(userInput/10); 
    System.out.println(userInput % 10); 

    keyboard.close(); 
} 

} 

Я в основном просто копировал и вставлял 2 программы, которые я создал. Если кто-нибудь может помочь мне в правильном направлении здесь, это было бы здорово.

+1

Теперь у вас есть один файл с двумя определениями классов и двумя основными() методами. Измените его так, чтобы у вас было только одно определение класса и один метод main(). Кроме того, импорт идет вверху (я думаю, для Java), и вы должны иметь только одну строку импорта один раз. –

+0

Что я сделал для публикации здесь, просто скопировал одну программу и скопировал другую. Я пытаюсь понять, как объединить 2 из них. –

+0

Да и мой комментарий дает вам общее руководство по началу работы. –

ответ

0

Вы можете использовать функцию Double.parseDouble(String string); вместе с try-Catch, чтобы проверить, было ли это число или строка на входе.

(...) 
String text = keyboard.nextLine(); 
try { 
    //We try and assume that it is a number 
    Double number = Double.parseDouble(text); 
    /** 
    * Do stuff with the number like in the 1st program 
    */ 
} 
catch (NumberFormatException e) 
{ 
    //The input turned out not to be a number. 
    /** 
    * Do stuff here with the string like the 2nd program 
    */ 
} 
0

Am не совсем уверены, что вы пытаетесь достичь, но если это действительно необходимо совместить все три класса вместе попробовать использовать Java внутренних классов

0

Я думаю, что ваш профессор ищет более объектно-ориентированное решение , Вы можете создать класс, который содержит три программы в виде отдельных методов, как этот

import java.util.scanner; 

public class AssignmentScanner { 

    public double convertToCelsius() { 
     Scanner keyboard = new Scanner(System.in); 
     double degreesF = keyboard.nextDouble(); 
     keyboard.close(); 
     return 5*(degreesF - 32)/9; 
    } 

    public String replaceHate() { 
     Scanner keyboard = new Scanner(System.in); 
     String text = keyboard.nextLine(); 
     String replacedText = text.replaceFirst("hate", "love"); 
     keyboard.close(); 
     return replacedText; 
    } 

    public int oneVerticalDisplay() { 
     Scanner keyboard = new Scanner(System.in); 

     int userInput = keyboard.nextInt(); 
     System.out.println(userInput/1000); 
     userInput = userInput % 1000; 
     System.out.println(userInput/100); 
     userInput = userInput % 100; 
     System.out.println(userInput/10); 
     System.out.println(userInput % 10); 

     keyboard.close(); 
    } 
} 

Вы все еще нужно создать основную программу, использовать этот объект, как это:

public class AssignmentMain { 

    public static void main(String[] args) { 
     AssignmentScanner assignmentScanner = new AssignmentScanner(); 

     System.out.println("Hello, I can convert Fahrenheit to Celsius!"); 
     System.out.println("Please enter the degrees Fahrenheit you want converted."); 
     double degreesC = assignmentScanner.convertToCelsius(); 
     System.out.println("The temperature in Degrees Celsius is: "); 
     System.out.printf("%.2f", degreesC); 

     System.out.println("Please enter a line containing 'hate'."); 
     String replacedText = assignmentScanner.replaceHate(); 
     System.out.println("I have changed that line to read: "); 
     System.out.println(replacedText); 

     System.out.println("Please enter a 4 digit integer."); 
     assigmentScanner.oneVerticalDisplay(); 
    } 
} 

Этот путь только ваша основная программа знает о AssignmentScanner и трех его методах. Это облегчает чтение и обслуживание основной программы. Есть еще возможности для улучшения, но я думаю, что это нормально для первого подхода.

Смежные вопросы