Для Loop, не нарушая Java? - PullRequest
0 голосов
/ 04 июля 2019

Я делал проблему в Codeforces, я могу написать код, но цикл for не прерывается.Перерыв под условием «если» не работает.

Вот ссылка: https://codeforces.com/problemset/problem/1167/A

import java.util.*;
import java.lang.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();

        for(int i=0;i<n;i++){
            int x=sc.nextInt();
            String y=sc.next();

            int c=x;

            for(int j=0;j<x;j++){       // This For loop is not breaking
                if(y.charAt(j)==8){
                    break;
                }
                else{
                    c--;
                }
            }
            if(c>=11){
                System.out.println("YES" );
            }
            else{
                System.out.println("NO" );
            }
        }
    }
}

Input: 13
       7818005553535
Output(Expected): YES that is c=12
Output: No that is c=0

1 Ответ

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

Вы фактически проверяете, является ли символ в позиции j символом юникода с кодом 8, а не символом '8'. И код Unicode Witch Code 8 - это BS (backspace), поэтому вы в основном проверяете, является ли символ backspace.

нужно проверить:

if(y.charAt(j) == '8')  // character literal

или

if(y.charAt(j) == 56)  // integral value of character

или

if(y.charAt(j) == '\u0038') // character escape sequence (Hex Value)

Коды символов Unicode: https://unicode -table.com / пл / # основной латынь

...