#java
#java
Вопрос:
Я хочу получить индекс первой буквы ‘d’ во вводимом строковом массиве.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i,j,p1=0,p2=0;
String grid[] = new String[5];
for(i=0; i<5; i )
grid[i] = sc.next();
for(i=0;i<5;i )
{
for(j=0;j<5;j )
{
if(grid[i].charAt(j)=='d')
{
p1=i;
p2=j;
break;
}
}
}
System.out.println(p1 "n" p2);
}
}
ввод
—d-
—d- -d — —d— вывод 4 2
Он всегда выдает мне последний индекс ‘d’, хотя я выполняю цикл от (0,0) до (5,5) Принимая во внимание, что если я внес изменения в цикл for и запустил его из (i=4; i>=0; i—), то проблема решена. Почему?
Комментарии:
1. Вы ищете индекс d? Почему бы не использовать строковый метод indexOf() ?
Ответ №1:
Это происходит потому, что при использовании break
он выводит вас только из внутреннего for
цикла, а внешний цикл продолжает выполняться для следующих строк в grid
массиве. Кроме того, вы должны запустить внутренний цикл для 0
to grid[i].length()-1
.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT.
Your class should be named Solution. */
Scanner sc = new Scanner(System.in);
int r = sc.nextInt();
int c = sc.nextInt();
int i,j,p1=0,p2=0;
String grid[] = new String[5];
for(i=0; i<5; i )
grid[i] = sc.next();
boolean found = false;
for(i=0;i<5;i ) {
for(j=0;j<grid[i].length();j ) {
if(grid[i].charAt(j)=='d') {
p1=i;
p2=j;
found = true;
break;
}
if(found) {
break;
}
}
}
System.out.println(p1 "n" p2);
}
}
Комментарии:
1. Спасибо. Я думал, что оператор ‘break’ выведет меня из обоих циклов.
2. else write прерывает внешний цикл
3. @NoorAhmedNatali да, я тоже могу это использовать, спасибо.
4. пожалуйста, нажмите стрелку вверх в моем ответе, если это поможет вам
Ответ №2:
public class HelloWorld{
public static void main(String[] args) {
int i,j,p1=0,p2=0;
String grid= "How do you do"; // you can take input as " scannerobj.nextLine()"
for(i=0;i<5;i )
{
for(j=0;j<5;j )
{
if(grid.charAt(j) == 'd')
{
p1=i;
p2=j;
break;
}
}
}
System.out.println(p1 "n" p2);
}
}
или вы можете использовать :
public class HelloWorld{
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
int i,j,p1=0,p2=0;
String grid= "How do you do"; // you can take input as "scannerobj.nextLine()
for(i=0;i<grid.length();i )
{
if(grid.charAt(i) == 'd')
{
p1=i;
break;
}
}
System.out.println(p1 "n");
}
}
Комментарии:
1. и зачем вам 2 цикла, мы можем сделать это за 1 цикл
2. Я использовал массив строк, потому что ввод состоял из нескольких строк. ссылка это вопрос
3. вы хотите использовать каждую строку ..?
Ответ №3:
Скопируйте весь этот код
import java.util.Scanner;
import java.util.ArrayList;
public class MyClass {
public static void main(String args[]) {
ArrayList<String> in = new ArrayList<String>();
Scanner s = new Scanner(System.in);
int p1=0,p2=0;
while (s.hasNextLine()) {
String line = s.nextLine();
in.add(line);
if (line != null amp;amp; line.equalsIgnoreCase("END")) {
System.out.println("Output list : " in);
break;
}
}
outerloop:
for(int i=0;i< in.size();i )
{
// System.out.print(i " " in.get(i));
for(int j=0;j < in.get(i).length();j )
{
if (in.get(i).charAt(j) == 'd')
{
p1=i;
p2=j;
break outerloop;
}
}
}
System.out.print(p1 " " p2);
}
}
Ответ №4:
Задавая свой вопрос, будьте конкретны. Согласно вашему вопросу, вы хотите получить первый индекс буквы «d» во вводимой строке, тогда это будет код.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i,index=0;
String grid= sc.nextLine(); //takes any string
for(i=0;i<grid.length();i )
{
if(grid.charAt(i) == 'd')
{
index=i;
break;
}
}
System.out.println(index);
}
}
Input
---d-
Output
3
если вы хотите выполнить несколько запросов / входных данных, то это будет код
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int queries=sc.nextInt(); //number of queries
while(queries-->0)
{
int i,index=0;
String grid= sc.next(); //takes any string
for(i=0;i<grid.length();i )
{
if(grid.charAt(i) == 'd')
{
index=i;
break;
}
}
System.out.print(index " ");
}
}
}
input
2
---d-
-----
output
3
0