2015-01-18 3 views
0

У меня проблема с программой, которую я компилирую. я получил отображение фактического расчета по функции 2. Основная программа называется display11, и я вызываю функции на другом классе. не может понять, что неправильно, что не отображает цикл. спасибоОтображение вычисления функции

import java.util.Scanner; 
/** 
* 
* @author ec1302696 
*/ 
public class Functions 
{ 
    private int n; 

    public void string_function(String name) 
    { 

     int optionChosen; 
     String fname; 
     String sname; 
     Scanner keyboard = new Scanner(System.in); 
     Scanner sc = new Scanner(System.in); 

     Functions fun = new Functions(); 



     System.out.println("Please enter full name"); 
     fname = sc.nextLine(); //accept first name entered by user 
          //****enter as a comment for now  fun.first(fname); 

     fun.createname(fname);// this create name 


     //display this is option 1,administrator name admin 
     //ask for full name for generating username 
     //call createname passing the username 





    } 

    public void number_function(String admin) 
    { 
     { 
      int n, c, fact = 1; 

     System.out.println("Enter a number to calculate it's factorial"); 
     Scanner in = new Scanner(System.in); 

     n = in.nextInt(); 

     if (n < 0) 
     System.out.println("Number should be non-negative."); 
     else 
     { 
     for (c = 1 ; c <= n ; c++) 
      fact = fact*c; 

     System.out.println("Factorial of "+n+" is = "+fact); 
     } 

     // return fact; 
     //this is option 2 ,administrator name admin 
     //read the factorial 
     //calcualte the fatorial 
     // print it 
    } 
    } 

    public void createname(String username) 
    { 
      String fname = fname.substring(0,1); 

      System.out.println("The usernameis " + fname); 

    //string calcualte the string function to find the first letter ,and second name. 
     //concatenate and print it. 

    }   
    } 
import java.util.Scanner; 

/** 
* 
* @author ec1302696 
*/ 
public class Display11 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     Functions fun = new Functions();// this create teh functions 

     int optionChosen; 

     String admin; 

     Scanner keyboard = new Scanner(System.in); 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Please enter your name"); 
     admin = keyboard.nextLine(); 

     { 
      System.out.println("Welcome please select option from menu below"); 
     } 
     System.out.println("OPTION 1 – USERNAME"); 
     System.out.println("OPTION 2 - CALCULATE THE FACTORIAL"); 
     System.out.println("OPTION 3 - EXIT"); 
     optionChosen = keyboard.nextInt(); 


     if (optionChosen == 1) 
     { 
      fun.string_function(admin); 
     } 

     else if (optionChosen == 2) { 

      { 
       fun.number_function(admin); 
      } 

     } 

     else if (optionChosen == 3) 
     { 
     } 
    } 
} 
+0

Вы должны изменить «Строка имя_файла = fname.substring (0,1);» на "String fname = username.substring (0,1);", но кроме этого - чего вы ожидаете, что этого не произойдет? Я запустил ваш код и, похоже, работал (после упомянутого изменения). –

+0

Спасибо. Единственная проблема, с которой я столкнулся, - это факторный номер. Ответ правильный, но я должен был отобразить расчет, а также. Запустите его, когда я вернусь домой и посмотрю, работает ли он нормально. – DanPhelps

+0

Хорошо, см. Ниже мое предложение о том, как распечатать расчет вместе с результатом. –

ответ

0

Если вам нужно, чтобы показать вычисление факториала, изменить цикл расчета на что-то вроде этого:

StringBuilder result = new StringBuilder("Factorial of ").append(n).append(" is "); 
for (c = n ; c >0 ; c--) 
{ 
result.append(c); 
if(c>1) 
{ 
    result.append(" * "); 
} 
fact = fact*c; 
} 

result.append(" = ").append(fact); 
System.out.println(result); 
Смежные вопросы