[英]Checking if a string is composed of 3 capital letters and 4 numbers (in JAVA)
[英]Java String: Checking for consecutive letters or numbers
問題:我正在用Java玩耍,並且試圖計算字符串中的連續“字符”。
例:
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String binaryString = Integer.toBinaryString(n);
上面的代碼返回輸入的整數值的二進制字符串。 如果輸入數字5,則返回:101
我現在希望遍歷字符串,並檢查字符串中是否有任何連續的1。
for (int i = 0; i < binaryString.lenth(); i++)
{
// code comes here...
}
我不確定如何檢查。 我嘗試了以下方法:
for (int i = 0; i < binaryString.length(); i++)
{
char charAtPos = binaryString.charAt(i);
char charAtNextPos = binaryString.charAt(i+1);
if (charAtPos == '1')
{
if (charAtPos == charAtNextPos)
{
consecutive += 1;
}
}
}
但這顯然會引發ArrayIndexOutOfBounds,因為i+1
會產生一個比數組長度大的數字。
預先感謝您的回答。
歐文
嘗試運行for循環,使其大小小於strin的長度
for (int i = 0; i < (binaryString.length()-1); i++)
{
char charAtPos = binaryString.charAt(i);
char charAtNextPos = binaryString.charAt(i+1);
if (charAtPos == '1')
{
if (charAtPos == charAtNextPos)
{
consecutive += 1;
}
}
}
您只需要1行:
binaryString.split("1(?=1)").length() - 1;
我們仍然可以使用和運算符簡化您的代碼
import java.util.Scanner;
class StackBinary
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
String n = Integer.toBinaryString(in.nextInt());
for (int i = 0; i < n.length()-1; i++)
{
char charAtPos = n.charAt(i);
char charAtNextPos = .charAt(i+1);
if (charAtPos == '1' && charAtNextPos == '1')
{
consecutive+=1;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.