#java
#java
Вопрос:
я пытаюсь решить вопрос codechef, я могу получить вывод в IDE, а также с пользовательским вводом, когда я пытаюсь запустить с этими входными данными, это выдает мне ошибку
ссылка на вопрос:
https://www.codechef.com/problems/HS08TEST
Код:
/* package codechef; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.DecimalFormat;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner input = new Scanner(System.in);
int numberOne = input.nextInt();
float numberTwo = input.nextFloat();
float reduction = 0;
float result = 0;
DecimalFormat df2 = new DecimalFormat(".00");
if(numberOne > 0 amp;amp; numberOne <= 2000 amp; numberTwo >= 0 amp;amp; numberTwo <= 2000){
if(numberOne % 5 == 0){
reduction = (float)numberOne (0.50f);
if(reduction <= numberTwo){
result = numberTwo-reduction;
System.out.println(df2.format(result));
}
if(reduction > numberTwo){
System.out.println(df2.format(numberTwo));
}
}
else{
System.out.println(df2.format(numberTwo));
}
}
}
}
Ошибка:
Исключение в потоке «main» java.util.NoSuchElementException в java.util.Scanner.throwFor(Scanner.java:862) в java.util.Scanner.next (Scanner.java: 1485) в java.util.Scanner.nextInt(Scanner.java:2117) в java.util.Scanner.nextInt (Scanner.java: 2076) в Codechef.main (Main.java: 14)
Комментарии:
1. Это вызвано тем, что
nextInt
и / илиnextFloat
не удалось выполнить требования, основанные на вводе. Возможно, вам придется использоватьnextLine
вместо этого и протестировать преобразованиеString
s вint
иdouble
вручную2. извините, но nextLine также не работает
Ответ №1:
«Ошибка» вызвана тем, что входные данные не были проанализированы как требуемый тип (т. Е. Scanner
невозможно либо проанализировать входные данные как int
или float
)
Решением «A» было бы взять входные данные и проанализировать их вручную. Вы могли бы использовать nextLine
и запустить другой Scanner
поверх него, или разделить на общий разделитель, или вы могли бы просто использовать next
, например…
import java.text.DecimalFormat;
import java.util.Scanner;
class Codechef {
public static void main(String[] args) throws java.lang.Exception {
Scanner input = new Scanner(System.in);
String element = input.next(); // Next value up to the next space or new line...
int numberOne = Integer.parseInt(element);
element = input.next(); // Next value up to the next space or new line...
float numberTwo = Float.parseFloat(element);
float reduction = 0;
float result = 0;
DecimalFormat df2 = new DecimalFormat(".00");
if (numberOne > 0 amp;amp; numberOne <= 2000 amp; numberTwo >= 0 amp;amp; numberTwo <= 2000) {
if (numberOne % 5 == 0) {
reduction = (float) numberOne (0.50f);
if (reduction <= numberTwo) {
result = numberTwo - reduction;
System.out.println(df2.format(result));
}
if (reduction > numberTwo) {
System.out.println(df2.format(numberTwo));
}
} else {
System.out.println(df2.format(numberTwo));
}
}
}
}
Это предполагает, что ввод предоставляется, как правило, в одной строке, но этот метод позволит вам работать с двумя отдельными входами. Но, не зная точно, каковы входные данные, трудно обеспечить более точное решение
Ответ №2:
Вы не используете пробел между входными значениями.
Просто прочитайте первую строку, используя nextLine, а затем разделите и проанализируйте числа соответствующим образом
Комментарии:
1. когда я пытаюсь прочитать первую строку, используя nextLine, это выдает мне ошибку :::: потому что nextLine используется для чтения строки .. я думаю
2. ДА. Протестируйте еще раз в своей IDE, используя одну строку ввода, как показано на codechef, вместо фактического ввода двух значений
3. сталкиваюсь с той же проблемой
4. Возможно, codechef использует аргументы основного метода, а не стандартный ввод
5. раньше я принимал аргумент из командной строки как …. args[0] … но это недопустимо
Ответ №3:
У меня сработала простая вещь …. я только окружил код try и catch….
окончательный рабочий код…
/* package codechef; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
try{
int n, sum = 0;
Scanner s = new Scanner(System.in);
n = s.nextInt();
int a[] = new int[n];
for(int i = 0; i < n; i )
{
a[i] = s.nextInt();
}
int largest=0;
int element=0;
for(int i = 0; i < n; i ){
for(int j=0;j<n;j ){
element=a[i]%a[j];
if(largest<element){
largest=element;
}
}
}
System.out.println(largest);
}
catch(Exception e){
}
}
}