2017-12-04 3 views
-2

私は、ユーザに自分の名前、所持している仕事の数、およびそれらの仕事の所得を尋ねるコードを書く過程にあります。次に、最高支払額と最低支払額、および入力したジョブの平均を検索します。ユーザーからの入力を取得し、それらの最高、最低、平均を見つけるにはどうすればよいですか?

イムまだユーザーが後でそれを暗唱するために、入力したもの維持しながら、平均を見つけると一緒に、最高と最低の支払う部分に問題が。

例: 入力:10000 30000 50000 は「こんにちはオードリーは、あなたは3つの仕事を持っていた最高の支払いの仕事は$ 50000を支払っ最低払っジョブは10000 $を支払ったジョブの平均賃金は、入力された$ 30000

。。。。 **** HERESにコード私が編集したが、それが正常に動作していない。私はそれがint型とdoubleとしなければならないと考えている。イムはわからないどのコードの二重であるべきで、どれがintでなければなりません。****

import java.util.Scanner; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
public class JobIncome { 


public static void main(String[] args) throws FileNotFoundException { 

Scanner input = new Scanner (System.in); 
System.out.println("What is your first name? "); 
String firstName = input.nextLine(); 

Scanner scan = new Scanner (System.in); 
System.out.println("How many jobs have you had? "); 
int jobNum = scan.nextInt(); 

//Declarations 
int total = 0; 
int average = 0; 

//for loop asks for the incomes of the user's previous 
//jobs and stores them into an array 
int arrayOfIncomes[] = new int[jobNum]; 
for(int i = 1; i <= arrayOfIncomes.length; i++){ 
    System.out.println("Enter the income of job #" + i + " : "); 
    arrayOfIncomes[i] = scan.nextInt(); 
    total = total + arrayOfIncomes[i]; 
} 

average = total/jobNum; 

//Start of the code that will find the min and max 
int min = arrayOfIncomes[0]; 
int max = arrayOfIncomes[0]; 

for (int i = 1; i < arrayOfIncomes.length; i++) { 
    if (arrayOfIncomes[i] > max) { 
     max = arrayOfIncomes[i]; 
    } 
} 

for (int i = 1; i < arrayOfIncomes.length; i++) { 
    if (arrayOfIncomes[i] < min) { 
     min = arrayOfIncomes[i]; 
    } 
} 

//Print statement that gives the user all their information 
System.out.println("Hello, " + firstName + ". You have had" + jobNum + 
"jobs. The highest paying job paid $" + max + 
". The lowest paying job paid $" + min + 
". The average pay for the " + jobNum + "jobs entered is $" + average + "."); 


//Prompt asking the user if they would like to print their info into a text file 
System.out.println("Would you like to output your information into a text file, yes or no? "); 
String yesNo = input.nextLine(); 
if(yesNo.equals("yes")){ 
    System.out.println(""); 
} else { 
    System.out.println("Goodbye."); 
} 


//Output code 
Scanner console = new Scanner(System.in); 
System.out.print("Your output file: "); 
String outputFileName = console.next(); 
PrintWriter out = new PrintWriter(outputFileName); 


//This code prints the information into the output text file 
out.print("Hello, " + firstName + ". You have had" + jobNum + 
"jobs. The highest paying job paid $" + max + 
". The lowest paying job paid $" + min + 
". The average pay for the " + jobNum + "jobs entered is $" + average + "."); 

out.close(); 
} 
+0

残りのコードはどこにありますか? – wleao

+0

それは私がこれまで持っていたものすべてです –

+0

最低支払額を保持する変数と最大支払額を保持する変数を宣言します。次に、すべての支払いの合計を保持する別のものと、いくつの支払いを保持するためのものかを入力します。必要に応じてこれらの変数を更新して、必要なものを得ることができるはずです。 –

答えて

0

は、配列をインスタンス化することによってジョブの数に等しい長さを有するjobIncomesのコードを修正しました。ランニング平均を維持できますが、丸めを行うと精度が失われます。また、合計、最大、最小の3つの整数変数をそれぞれゼロでインスタンス化する必要があります。ループの各反復のために

は、次のコードを追加する必要があります:

jobIncomes[i-1]=s.nextInt(); 
if (jobIncomes[i-1]<min) 
{ min=jobIncomes[i-1];} 
if (jobIncomes[i-1]>max 
{max=jobIncomes[i-1];} 
total+=jobIncomes[i-1]; 

あなたは平均を印刷するとき、あなたは式平均=合計/ JOBNUMをキャストすることができます。 if文でiだけインデックスを作成する場合は、配列の値を0からjobNum-1に変更することもできます。

0

int型変数sumを作成します。あなたは、変数012との合計を分割し、ユーザからの入力を取得して合計を追加します。には、少なくとも1つの変数をdoubleにキャストします。

例:

double ave = (double) sum/jobNum; 
+0

私はコードにもっと多くを追加しました。問題は私が現在行っている27行目です。arrayOfIncomes [i] = scan.nextInt();それは、配列のインデックスが配列のインデックスはゼロから始まりに起因するあなたの最後の要素のインデックスはarrayOfIncomes.lengthは16を返します。したがって、あなたが存在しない配列の要素にアクセスしようとしている15になる境界 –

+0

の外であることを述べています。 (int i = 0; i

関連する問題