2016-04-01 4 views
0

Я делаю программу, которая просит 5 студентов ввести их имя и gpa, которые будут вычислять самый низкий и самый высокий уровень gpa, а также средний. Я продолжаю получать ошибку «несовместимого типа», хотя я уже инициализировал переменные в конструкторе.Устранение неполадок в строке

System.out.println("Please enter the gpa for the second student"); 
gpa2 = scan.nextDouble(); 
System.out.println("Please enter the name for the third student"); 
student3 = scan.nextLine(); 
System.out.println("Please enter the gpa for the third student"); 
gpa3 = scan.nextDouble(); 
System.out.println("Please enter the name for the fourth student"); 
student4 = scan.nextLine(); 
System.out.println("Please enter the gpa for the fourth student"); 
gpa4 = scan.nextDouble(); 
System.out.println("Please enter the name for the last student"); 
student5 = scan.nextLine(); 
System.out.println("Please enter the gpa for the last student"); 
gpa5 = scan.nextDouble(); 
//use scanner to get the gpa 



System.out.println("Student Name /" + " Student GPA"); 
System.out.println("----------------------------); 
System.out.println(student1 +" /  "+ gpa1); 
System.out.println(student2 +" /  "+ gpa2); 
System.out.println(student3 +" /  "+ gpa3); 
System.out.println(student4 +" /  "+ gpa4); 
System.out.println(student5 +" /  "+ gpa5); 

/** 
* Creates objScore object and passas in student parameters to class StudentScore...name and GPA scores 
*/ 
StudentScore objScore = new StudentScore(student1, gpa1, student2, gpa2, student3, gpa3, student4, gpa4, student5, gpa5); 

1 error found:

File: C:\Users\Mikey Espinal\OneDrive\Documents\StudentScoreTester.java [line: 46]

Error: incompatible types: double cannot be converted to java.lang.String

+4

Я собираюсь догадка на код, который вы не разделял и предполагают, что есть ошибка в строке 4 –

+3

Как выглядит ваш конструктор StudentScore? –

+3

Пожалуйста, поставьте исходный код непосредственно в сообщении с помощью кнопки «{}» или окружения, подобной этому исходному коду '' – andrewdleach

ответ

3

Вы должны использовать String.valueOf(gpa1) вместо gpa1. Это преобразует ваши double в String. То же самое делать с другим double s (gpa2, gpa3, ...).

+0

Лично я думаю, что использование 'String.valueOf()' глупо, когда оно ничего не делает, кроме прямого вызова 'Double.toString()'. –

+1

Кроме того, Java автоматически преобразует gpa в операторы печати в строки, потому что они конкатенируются с строкой. Я не верю, что это его проблема. –

+1

@zposten утверждения печати не имеют ничего общего с вызовом конструктора. – CubeJockey

2

Я думаю, что ваша проблема заключается в том, что ваш код не вызывает scan.nextLine() после каждого scan.nextDouble().

2

У вашего кода нет проблем. Проверьте конструктор класса StudentScore. Я чертовски уверен, что вы использовали String везде, а не double для всех значений gpa. Sol 1: либо конвертировать gpa в String явно, как было предложено выше Andrew String.valueOf (gpa1), а затем перейти к конструктору или Sol2: Измените свой конструктор и используйте Double/double во всех местах gpa.

2

Я могу только догадываться, что вы указали переменные gpaX типа String. Вместо этого объявите их типа double - таким образом вы сохраните их как double, пока они не будут преобразованы в строки для печати.

2

Вы объединяете строку с двойным значением при печати строк, которые не совместимы с java. Все, что вам нужно сделать, это преобразовать тип double в String. Это можно сделать, используя Функция String.valueOf(). Try: System.out.println (student1 + «/» + String.valueOf (gpa1);

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