Я хочу преобразовать массив строк в массив int, чтобы показать общее - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь составить табель успеваемости студента, который отсутствует в каком-либо предмете Например, если студент отсутствует по двум предметам, тогда результат должен быть следующим:

subject    marks
sub1       78
sub2       84
sub3       Absent
sub4       Absent
sub5       34
-------------------
Total:xx   Average:xx



import java.util.*;
public class ReportCard {

    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);

        System.out.print("Enter Student name: ");
        String name=sc.nextLine();
        System.out.print("Enter number of Subject: ");
            int no=sc.nextInt();

        String[] marks =new String[no];
        for(int i=0;i<marks.length;i++)
        {
            System.out.print("Enter marks of subject"+(i+1)+":");
            marks[i]=sc.nextLine();
        }

        reportCard(marks, name);
        sc.close();

    }
    static void reportCard(String[] marks,String name)
    {
    System.out.print("---------------------------------------\n");
        System.out.print("\t REPORT CARD\n");
        System.out.println("NAME:"+name);
    System.out.println("---------------------------------------\n");
    System.out.println("SUBJECT\t\t       MARKS");
    int total=0;
    for(int i=0;i<marks.length;i++)
        {
         if(marks[i]=="Absent")
            {
              break;
            }
            else
            {
             total=total+marks[i]   
            }

         System.out.println("Subject "+(i+1)+"\t\t"+marks[i]);
        }
     System.out.print("---------------------------------------\n");
     float avg;
     avg=((float)total/marks.length);
     System.out.print("Total: "+total+"\t Average:"+avg);

    }
}

Строка не может быть преобразована в int

Ответы [ 7 ]

0 голосов
/ 09 июля 2019

1 - Создать один массив с типом string К имени StringArray

string[] StringArray = new string[] {"1","2","3"};

2-1 - Создать один массив с типом int К имени IntArray

int[] IntArray = new int[StringArray.Length];

3-Записать этот код в Преобразовать

    for (int i = 0; i < IntArray.Length; i++)
    {
        IntArray[i] = int.Parse(StringArray[i]);
    }
0 голосов
/ 09 июля 2019

лямбда-выражение отделяет вычисление total от таблицы печати:


System.out.println( "SUBJECT\t\t MARKS" );

for( int i = 0; i < marks.length; i++ ) {
  System.out.println( "Subject " + (i + 1) + "\t\t" + marks[i] );
}       
System.out.print( "---------------------------------------\n" );
int total = Stream.of( marks ).filter( m -> ! "Absent".equals( m ) ).collect(
    Collectors.summingInt( Integer::parseInt ) );

float avg = ((float)total / marks.length);
System.out.print( "Total: " + total + "\t Average:" + avg ); // Total: 196 Average:39.2

если marks[] содержит пустые строки, лямбда-выражение завершается ошибкой с NumberFormatException специально

0 голосов
/ 08 июля 2019

Попытка работать с этим:

import java.util.*;

import com.sun.jndi.url.iiop.iiopURLContext;

import sun.audio.ContinuousAudioDataStream;
public class Main {

    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);

        System.out.print("Enter Student Name: ");
        String name=sc.nextLine();
        System.out.print("Enter Number of Subjects: ");
        int no=sc.nextInt();

        sc.nextLine();

        String[] marks =new String[no];
        for(int i=0;i<marks.length;i++)
        {
            System.out.print("Enter marks for subject "+(i+1)+": ");
            marks[i]=sc.nextLine();
        }

        reportCard(marks, name);
        sc.close();

    }
    static void reportCard(String[] marks,String name)
    {
    System.out.print("---------------------------------------\n");
        System.out.print("\t REPORT CARD\n");
        System.out.println("NAME:"+name);
    System.out.println("---------------------------------------\n");
    System.out.println("SUBJECT\t\t       MARKS");

    int total=0;

    for(int i=0;i<marks.length;i++)
        {
         if(i=="Absent")
            {
              break;
            }
            else
            {
             total = total + Integer.parseInt(marks[i]);  
            }

         System.out.println("Subject "+(i+1)+"\t\t"+marks[i]);
        }
     System.out.print("---------------------------------------\n");
     float avg;
     avg=((float)total/marks.length);
     System.out.print("Total: "+total+"\t Average:"+avg);

    }
}
0 голосов
/ 08 июля 2019

Вам необходимо преобразовать оценку в числовое значение. Однако вам также необходимо убедиться, что значение действительно является числовым.

      Scanner scan = new Scanner(System.in);
      String str;
      while (!(str = scan.nextLine()).equalsIgnoreCase("end")) {
         int grade;
         try {
            grade = Integer.parseInt(str);
            System.out.println("numeric grade = " + grade);
         }
         catch (IllegalArgumentException ie) {
            System.out.println("No grade - " + str);
         }
      }

Когда вы запускаете выше, вы можете ввести целые числа или строки. Это будет обрабатывать их соответственно. Если метод parseInt пытается преобразовать слово в int, он выдаст exception, который перехватывается и обрабатывается соответствующим образом.

0 голосов
/ 08 июля 2019

Строка может быть легко преобразована в допустимое целое число с помощью классов-оболочек Java. Вы можете узнать о них больше здесь !

Например:

String number = "10";
int result = Integer.parseInt(number);          
System.out.println(result);

Здесь Integer - класс-оболочка. Обратите внимание на разницу между int и Integer

<- Do UpVote, если полезно -> :)

0 голосов
/ 08 июля 2019

total=total+marks[i] - эта строка принимает значение int (total) и устанавливает его равным себе плюс marks[i]. marks[i] является строкой, потому что она происходит из массива строк.

Похоже, что marks может иметь единственное значение, которое не может быть приведено к типу int, это "Отсутствует", поэтому после проверки, чтобы убедиться, что значение не отсутствует, вы можете привести это значение к типу int. чтобы его можно было добавить к вашему итоговому итогу.

Попробуйте добавить parseInt() вокруг marks[i], сделав строку total=total+parseInt(marks[i]). Будьте внимательны, чтобы убедиться, что приведенные вами значения являются просто строковой версией целых, иначе вы столкнетесь с проблемами.

0 голосов
/ 08 июля 2019

Integer.parseInt ([STRING GOES HERE]) вернет целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...