Исключение У "основного" java.util.InputMismatchException? - PullRequest
1 голос
/ 17 марта 2019
[
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 Ответ

0 голосов
/ 17 марта 2019

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

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

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

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

sent[i] = br.readLine();

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

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

sent = new String[t];

...