是否有更容易和超过6个功能代码?

时间:2018-05-22 14:46:54

标签: java

我正在尝试为我的课程笔记和akts系统做一个计算器。 但是我无法为可选择的课程做一个功能选项,并且用for循环来计算数量。

package sa;

import java.util.Scanner;

class sA {  

public static void main(String[] args){
Scanner ders = new Scanner(System.in);
System.out.print("Ders sayısını giriniz: ");
int y = ders.nextInt();

if (y == 6) {

System.out.println("Notları, gireceğiniz akts sırasıyla giriniz!");
Scanner not1 = new Scanner(System.in);
System.out.print("1.not : ");
float q = not1.nextFloat();
Scanner not2 = new Scanner(System.in);
System.out.print("2.not : ");
float a = not2.nextFloat();
Scanner not3 = new Scanner(System.in);
System.out.print("3.not : ");
float z = not3.nextFloat();
Scanner not4 = new Scanner(System.in);
System.out.print("4.not : ");
float w = not4.nextFloat();
Scanner not5 = new Scanner(System.in);
System.out.print("5.not : ");
float s = not5.nextFloat();
Scanner not6 = new Scanner(System.in);
System.out.print("6.not : ");
float x = not6.nextFloat();

System.out.println("Notları girdiğiniz sıra ile, akts lerini giriniz.!");
Scanner akts1 = new Scanner(System.in);
System.out.print("1.akts : ");
int e = akts1.nextInt();
Scanner akts2 = new Scanner(System.in);
System.out.print("2.akts : ");
int d = akts2.nextInt();
Scanner akts3 = new Scanner(System.in);
System.out.print("3.akts : ");
int c = akts3.nextInt();
Scanner akts4 = new Scanner(System.in);
System.out.print("4.akts : ");
int r = akts4.nextInt();
Scanner akts5 = new Scanner(System.in);
System.out.print("5.akts : ");
int f = akts5.nextInt();
Scanner akts6 = new Scanner(System.in);
System.out.print("6.akts : ");
int v = akts6.nextInt();

float t = q*e+a*d+z*c+w*r+s*f+x*v;
float g = t/(e+d+c+r+f+v);
System.out.println(g);
}
else {
System.out.print("Sadece 6 dersi hesaplayacak algoritma bulunmaktadır.");
}

}
}

这是另一个未完成的尝试。

package sa;

import java.util.Scanner;

public class es  { 

public static void main(String[] args) {

    System.out.println("Ders sayısını giriniz:");
    Scanner ders = new Scanner(System.in);
    int y = ders.nextInt();
    System.out.println("Notları, gireceğiniz akts sırasıyla giriniz");

    for (int i=1; i<=y; i++) {

    System.out.println(i+".not");   
    Scanner s = new Scanner(System.in);
    float r = s.nextFloat();
    }

    for (int a=1; a<=y; a++) {

    System.out.println(a+".akts");          
    Scanner c = new Scanner(System.in);
    float e = c.nextFloat()  ;

    }
}
}

2 个答案:

答案 0 :(得分:0)

  • Scanner的一个实例就足够了。它应该在最后关闭。
  • 我可以看到相同的代码片段,可以移动到单独的方法。

示例:

public static void main(String... args) throws IOException {
    try (Scanner scan = new Scanner(System.in)) {
        System.out.print("Ders sayısını giriniz: ");
        int y = scan.nextInt();

        if (y == 6) {
            System.out.println("Notları, gireceğiniz akts sırasıyla giriniz!");
            float q = requestValue("1.not", scan::nextFloat);
            float a = requestValue("2.not", scan::nextFloat);
            float z = requestValue("3.not", scan::nextFloat);
            float w = requestValue("4.not", scan::nextFloat);
            float s = requestValue("5.not", scan::nextFloat);
            float x = requestValue("6.not", scan::nextFloat);

            System.out.println("Notları girdiğiniz sıra ile, akts lerini giriniz.!");
            int e = requestValue("1.akts", scan::nextInt);
            int d = requestValue("2.akts", scan::nextInt);
            int c = requestValue("2.akts", scan::nextInt);
            int r = requestValue("4.akts", scan::nextInt);
            int f = requestValue("5.akts", scan::nextInt);
            int v = requestValue("6.akts", scan::nextInt);

            float t = q * e + a * d + z * c + w * r + s * f + x * v;
            float g = t / (e + d + c + r + f + v);
            System.out.println(g);
        } else {
            System.out.print("Sadece 6 dersi hesaplayacak algoritma bulunmaktadır.");
        }
    }
}

private static <T> T requestValue(String msg, Supplier<T> supplier) {
    try {
        System.out.print(msg + " : ");
        return supplier.get();
    } finally {
        System.out.println();
    }
}

答案 1 :(得分:0)

以下是使用基本for循环的示例实现。请注意,我不会说土耳其语(?),因此变量名称可能无法以良好的方式表达其意图。此外,我猜到了你的意图。

Scanner scanner = new Scanner(System.in);

// Get number of courses.
System.out.print("Ders sayısını giriniz: ");
int numberOfCourses = scanner.nextInt();

float[] grades = new float[numberOfCourses];
int[] akts = new int[numberOfCourses];

// Get grades.
System.out.println("Notları, gireceğiniz akts sırasıyla giriniz!");
for (int i = 0; i < numberOfCourses; i++)
{
    System.out.printf("%d.not : ", i + 1);
    grades[i] = scanner.nextFloat();
}

// Get akts.
System.out.println("Notları girdiğiniz sıra ile, akts lerini giriniz.!");
for (int i = 0; i < numberOfCourses; i++)
{
    System.out.printf("%d.akts : ", i + 1);
    akts[i] = scanner.nextInt();
}

// Calculate result.
float result = 0;
int aktsSum = 0;
for (int i = 0; i < numberOfCourses; i++)
{
    result += grades[i] * akts[i];
    aktsSum += akts[i];
}
result /= aktsSum;

System.out.println(result);