Исключение в «главном» java.util.Исключение InputMismatchException?

#java #error-handling #compiler-errors #syntax-error #runtime-error

#java #обработка ошибок #ошибки компилятора #синтаксическая ошибка #время выполнения-ошибка

Вопрос:

 [
import java.io.*;
import java.util.*;
import java.text.*;
import java.io.*;
import java.math.*;
import java.util.regex.*;

public class Solution 
{
static double rounnd(double r)
{
    double t=r;
    double x = Math.round(t*100);
    x=x/100;
    t=x;
    return t;
}

public static double op(int w,String sent,double t2) throws Exception
{
    String left="qwert",right="yuiop";
    int lt=1,rt=1,lastturn=0;

    double t3=0;

    Scanner sc=new Scanner (System.in);
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in) );

    lt=1;rt=1;lastturn=0;
    for(int j = 0; j < sent.length();j   )
    {
        left="qwert";right="yuiop";
        t2=0;
        lt=lastturn==1?lt:1;
        rt=lastturn==2?rt:1;
        char ch = sent.charAt(j);
        if (left.contains(Character.toString(ch))){
            t3=t3 (0.2*lt);
            lt=lt*2;
            lastturn=1;

        }
        else if (right.contains(Character.toString(ch))){
            t3=t3 (0.1*rt);
            rt=rt*2;
            lastturn=2;

        }

    }
    return t3;
}

public static void main(String args[])throws Exception {

    Scanner sc=new Scanner (System.in);
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in) );

    String left="qwert",right="yuiop";
    int lt=1,rt=1,lastturn=0;

    double t2[],t3[];
    String sent[];

    //System.out.println("Enter Numumber Of lines");
    int t=sc.nextInt();
    int w[]=new int[t];
    t2=new double[t];
    t3=new double [t];
    sent = new String[t];
    for(int i=0;i<t;i  ){            
        w[i]=sc.nextInt();
        //br.readLine();
        sent[i] = br.readLine();
        t2[i] = sc.nextDouble();
        t3[i]=(0.3*(w[i]-1));
    }
    for(int i=0;i<t;i  ){
        String arr[]=sent[i].split(" ");
        String c[]=new String[arr.length];
        for(int j=0;j<w[i];j  )
            c[j]="";
        int r=0;
        for(int j = 0; j < arr.length ; j   ){
            boolean b=false;
            for(int k=0;k<arr.length;k  )//were tyui owiq 5.9 qwer yuio qiwo 5.1 type type were type were type 7.5
            {
                if(c[k].equals(arr[j]))
                    b=true;

            }
            if(b)
            {
                double q=(op(w[i],arr[j],t2[i])/2);
                t3[i]=t3[i] q;
            }
            else {
                double q=op(w[i],arr[j],t2[i]);
                t3[i]=t3[i] q;
            }
            c[r  ]=arr[j];
        }
    }
    for(int i=0;i<t;i  ){
        t3[i]=rounnd(t3[i]);
        String str=String.valueOf((t3[i]));
        str=(str.length()-str.indexOf("."))==3?str:str "0";
        System.out.println((t3[i]<t2[i]?"WORK HARDER, " str:t3[i]==t2[i]?"GOOD, " str:t3[i]>t2[i]?"GREAT JOB, " str:""));

    }
}
}][1]
  

https://www.hackerrank.com/contests/iiitv-bitsetgo-18/challenges/can-you-even-type
для ошибки смотрите код изображения, есть ли ссылка на вопрос, пожалуйста, помогите, возникает какое-то исключение, программа отлично работает на bluej idk, что происходит на веб-сайтеhttps://i.stack.imgur.com/AOnc6.png . ИГНОРИРУЙТЕ ТЕКСТ ВПЕРЕДИ Я не знаю, сколько мне нужно ввести, чтобы получить право на отправку моего вопроса, потому что я уже предоставил все детали. Проверьте, что я ввел.

Комментарии:

1. Пожалуйста, не заставляйте свой вопрос полагаться на внешние ресурсы. Вопрос должен быть в состоянии оставаться сам по себе, даже если связанные ресурсы сломаются. Поэтому, пожалуйста, укажите в своем вопросе, что должен делать ваш код, какие данные использовались и что вы получили вместо этого. Также не публикуйте текст в виде изображения. Цель этого сайта в том, чтобы другие пользователи с такой же проблемой могли находить похожие вопросы, но поисковые системы не позволяют пользователям находить текст на рассматриваемом изображении (по крайней мере, не популярные).

Ответ №1:

Согласно документации, найденной здесь:

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextDouble ()

Исключение InputMismatchException — если следующий токен не соответствует регулярному выражению с плавающей запятой или находится вне диапазона

В этой строке вы пытаетесь прочитать double, используя Scanner

sent[i] = br.readLine();

Тем не менее, прикрепленное вами изображение показывает, что предоставленные входные данные могут быть целым числом или даже строкой. Кажется, вы никогда не проверяете, является ли полученный вами ввод двойным или четным числовым. Я предлагаю вам поработать над этим.

Также примечание, это крайне неправильно по многим причинам. Пожалуйста, избегайте этого:

sent = new String[t];