-1

getAverage メソッドと main メソッドを使用してプログラムを作成し、ユーザーに 5 文字を入力させ、平均 ASCII 値と最大文字を計算/出力する必要がありますが、Eclipse で多くのエラーが発生し、よくわかりません。私がしていること

   public static int getAverage(char [] ascii, int [] decimal, int [] letters) {
{       

    System.out.println("Enter 5 letters from the English Alphabet: ");
    Scanner input = new Scanner(System.in);

ここに ASCII 番号として保存する文字を取得しようとしています

   System.out.println("Letter 1 (a-z or A-Z): ");
    char a = (input.next()).charAt(0);
        int letterOne = -1;
        for(int i=0; i<ascii.length; i++){
            if (ascii[i] == a)
                letterOne=i;
        }
    System.out.println("Letter 2 (a-z or A-Z): ");
    char b = (input.next()).charAt(0);
        int letterTwo = -1;
        for(int i=0; i<ascii.length; i++){
            if (ascii[i] == b)
                letterTwo=i;
        }
    System.out.println("Letter 3 (a-z or A-Z): ");
    char c = (input.next()).charAt(0);
        int letterThree = -1;
        for(int i=0; i<ascii.length; i++){
            if (ascii[i] == c)
                letterThree=i;
    }
    System.out.println("Letter 4 (a-z or A-Z): ");
    char d = (input.next()).charAt(0);
        int letterFour = -1;
        for(int i=0; i<ascii.length; i++){
            if (ascii[i] == d)
                letterFour=i;
    }
    System.out.println("Letter 5 (a-z or A-Z): ");
    char e = (input.next()).charAt(0);
        int letterFive = -1;
            for(int i=0; i<ascii.length; i++){
                if (ascii[i] == e)
                    letterFive=i;
    }

これらをメインで使用できる配列にする方法がわかりません

    int[] letter = new int{letterOne, letterTwo, letterThree, letterFour, letterFive}; 

    int [] lettersArray = {a, b, c, d, e};
    int average = ((a+b+c+d+e)/5);


    System.out.println("Your average value is: " + average);

何かあれば、ここに何を返せばよいかわからない?

     return ;

}


public static void main(String[] args)
{
    int [] decimalArray = new int[52];
    char[] asciiArray = new char[52];

    int base = 65;

    for (int i=0; i<26;i++){
        decimalArray[i] = base;
        asciiArray[i] = (char) base;
        base++;
    }
    base = 97;
    for(int i = 26; i<52; i++){
        decimalArray[i] = base;
        asciiArray[i] = (char) base;
        base++;
    }

    int [] lettersArray = new int[5];

ここでCHARからINTに変更する方法がわからない

    int[] letters = new int[5];
    char max = letters[0]
            for(int i = 0; i<5; i++){
                if(max < letters[i])
                    max = letters[i];
            }

    getAverage(asciiArray, decimalArray, lettersArray);

    System.out.println("The highest letter is: " + max);


}



}
4

2 に答える 2

0

ユーザーが以前に入力した値にアクセスする必要がない限り、必ずしも配列は必要ありません。次のように実行できます。

import java.util.Scanner;

class ASCII_Average_Calculator {
  public static void main(String []args){
    int n_letters = 5;//the amount of letters you want to capture

    int sum = 0;
    int ascii = 0;//this will hold the ascii value
    double average = 0;

    String letters = new String();

    for (int i = 0; i < n_letters; ++i) {
      System.out.println("Letter " + (i+1) + " (a-z or A-Z):");

      Scanner input = new Scanner(System.in);
      char c = input.next().charAt(0);//see this link for more: https://stackoverflow.com/questions/13942701/take-a-char-input-from-the-scanner

      ascii = (int)c;//cast the character to an int

      //perform comparisons to see if it is not within the limits for
      //lowercase ascii values: (97 to 122)
      //uppercase ascii values: (65 to 90)
      //and ensure that the value captured is within those limits (i.e. valid for a-z and A-Z)
      while ((!(ascii > 96) && (ascii <= 96 + 26)) ||
          (!(ascii > 64) && (ascii <= 64 + 26))) {
        System.out.println("Invalid entry: \"" + c + "\"! Please try again.");
        System.out.println("Letter " + (i+1) + " (a-z or A-Z):");
        input = new Scanner(System.in);
        c = input.next().charAt(0);
        ascii = (int)c;
      }

      sum += ascii;//increment the sum

      if (i == n_letters - 1) {
        letters += c;
      }
      else {
        letters += c + " , ";
      }
    }

    //finally, compute the average
    average = sum/(double)n_letters;

    System.out.println("The average of the letters: \"" + letters + "\" is " + average);
  }
}

サンプル入力:

Letter 1 (A-z or A-Z):
a
Letter 2 (A-z or A-Z):
v
Letter 3 (A-z or A-Z):
b
Letter 4 (A-z or A-Z):
x
Letter 5 (A-z or A-Z):
e

出力:

The average of the letters: "a , v , b , x , e" is 106.8

参考文献:

スキャナから文字入力を受け取る

http://www.asciitable.com/

于 2013-10-12T02:39:24.217 に答える