2016-02-23 3 views
0

, поэтому я некоторое время работал над этим кодом и получил много исправленных ошибок, но теперь, когда пользователь вводит числа в качестве показателей, которые дают мне некоторые странные ошибки, кода, чем больной пост ошибкиСбои с преобразованием формата, получая странную ошибку

import java.util.Scanner; 
import java.util.*; 
public class project3 
{ 
    private static double[] payrate; 
    private static String[] names; 


    public static void SortData(double payrate[]) 
    { 
     int first; 
     int temp; 
     int i; 
     int j; 
     for(i = payrate.length - 1; i > 0; i--) 
     { 
      first = 0; 
      for(j = 1; j<=i;j++) 
      { 
       if(payrate[j]<payrate[first]) 
       first = j; 
      } 
      temp = (int)payrate[first]; 
      payrate[first] = payrate[i]; 
      payrate[i] = temp; 
     } 
    } 

    public static void GetData() 
    { 

    Scanner input = new Scanner(System.in); 
    System.out.println("How many names do you want to enter?"); 
       String strNum = input.nextLine(); 
       int num = Integer.parseInt(strNum); 
       int array[] = new int[num]; 
       for (int i = 0 ; i < array.length ; i++) 
        { 
         names = new String[num]; 


         System.out.println("enter employee's name: "); 

         names[i] = input.nextLine(); 
         //while(names[i].length < 2) 
         //{ 
          //System.out.println("enter valid employee's name: "); 

         //names[i] = input.nextLine(); 
         //} 

        } 
       for(int j = 0; j < array.length;j++) 
        { 
         payrate = new double[num]; 
         System.out.println("enter employee's payrate: "); 
         payrate[j] = input.nextDouble(); 
         while(payrate[j] > 100 || payrate[j] < 0) 
         { 
          System.out.println("enter valid employee's payrate: "); 
          payrate[j] = input.nextDouble(); 
         } 


        } 


    } 
     public static void DisplayData(double payrate[], String names[]) 
    { 

     System.out.printf("Name PayRate\n"); 
     for (int l=0; l< names.length; l++) 
     { 

      //for(int i=0;i<names.length;i++) 
      // { 
       System.out.print(names[l]); 

      System.out.printf("%6d\n", payrate[l]); 

      //} 
     } 
    } 

    public static void main(String[] args) 
    { 
     GetData(); 
     SortData(payrate); 
     DisplayData(payrate,names); 

    } 

погрешность его дает мне является Я DisplayData метод Я думаю, это ошибка:

nullException in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double 
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302) 
    at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793) 
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747) 
    at java.util.Formatter.format(Formatter.java:2520) 
    at java.io.PrintStream.format(PrintStream.java:970) 
    at java.io.PrintStream.printf(PrintStream.java:871) 
    at project3.DisplayData(project3.java:80) 
    at project3.main(project3.java:90) 
+0

Пожалуйста, уменьшите это до [mcve]. –

ответ

-1

Вы используете неправильный формат строку. См. Например, этот вопрос: Java: Double % formatting question for printf

+0

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

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