根据Javadoc(根据我的理解),matches()即使它找到了它正在寻找的东西,它也会搜索整个字符串,并find()在它找到它所寻找的内容时停止.
如果这个假设是正确matches()的find(),除非你想要计算它找到的匹配数,否则我无法看到你想要使用的代替.
在我看来,String类应该具有find()而不是matches()作为内置方法.
总结一下:
matches()而不是find()?考虑到我的另一个问题,我决定甚至不能创建一个匹配罗马数字的正则表达式(更不用说将生成它们的无上下文语法)
问题是只匹配有效的罗马数字.例如,990不是"XM",它是"CMXC"
我为此制作正则表达式的问题是,为了允许或不允许某些字符,我需要回顾一下.例如,让我们花费成千上万.
我可以允许M {0,2} C?M(允许900,1000,1900,2000,2900和3000).但是,如果匹配在CM上,我不能允许跟随字符为C或D(因为我已经在900).
我怎样才能在正则表达式中表达这一点?
如果它在正则表达式中根本无法表达,它是否可以在无上下文语法中表达出来?
我有一份所有莎士比亚十四行诗的清单,我正在制作一个搜索每个十四行诗的功能.但是,我希望能够使用阿拉伯数字搜索它们(例如"/ sonnet 122"..txt的格式如下:
I
This is a sonnet
II
This is a second sonnet
Run Code Online (Sandbox Code Playgroud)
我现在正在使用节点来尝试这样做,但是我从昨天起就一直在尝试无济于事.我昨天的最后一次尝试是使用'替换'方法:
'use strict';
//require module roman-numerals, which converts roman to arabic
var toArabic = require('roman-numerals').toArabic;
//require file-handling module
var fs = require('fs');
fs.readFile('sonn.txt', 'utf8', function (err,data) {
if (err) {
console.log(err);
} else {
var RN = /[A-Z]{2,}/g;
var found = data.match(RN); //finds all roman numbers and puts them in an array
var numArr = [];
for (var i = 0; i < found.length; i++ ){ …Run Code Online (Sandbox Code Playgroud) 我是Java的新手,我需要编写一个程序来将罗马数字转换为阿拉伯数字。
我不能使用某些功能,因为不允许更改乞讨或给定代码的结尾。我需要做所有的事情public static void main函数。
我开始在Google上搜索并开始编写代码。从现在开始,我只能将“一个字母”的数字(如X,I,V ...)转换为阿拉伯数字,但是我只能将其转换为复杂的数字(XI,CCC,IX,IV ...)。
有人能帮我吗?我真的是Java新手。这是我的第一门程序语言,我正努力理解它。
这是我的代码:
import java.util.Scanner;
class Roman {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int[] numbers = {1000, 500, 100, 50, 10, 5, 1 };
String symbols = "MDCLXVI";
/*******************************************
* Complete your program
*******************************************/
System.out.print("Enter a roman numeral");
final int MAX = 3999;
Scanner keyb = new Scanner(System.in);
String roman = keyb.next();
roman=roman.toUpperCase();
if(roman.matches(".*[0-9].*") || !roman.matches("[M|D|C|L|X|V|I]*")){
System.out.println("Impossible to convert. Wrong roman numeral");
}
int i …Run Code Online (Sandbox Code Playgroud) 尝试编写程序以读取表示罗马数字(来自用户输入)的字符串,然后将其转换为阿拉伯语形式(整数).例如,I = 1,V = 5,X = 10等.
基本上,采用String类型参数的构造函数必须将字符串(来自用户输入)解释为罗马数字并将其转换为相应的int值.
除了正在进行的以下(还没有编译)之外,还有更简单的方法来解决这个问题:
import java.util.Scanner;
public class RomInt {
String roman;
int val;
void assign(String k)
{
roman=k;
}
private class Literal
{
public char literal;
public int value;
public Literal(char literal, int value)
{
this.literal = literal;
this.value = value;
}
}
private final Literal[] ROMAN_LITERALS = new Literal[]
{
new Literal('I', 1),
new Literal('V', 5),
new Literal('X', 10),
new Literal('L', 50),
new Literal('C', 100),
new Literal('D', 500),
new Literal('M', 1000)
};
public …Run Code Online (Sandbox Code Playgroud) 我在计算机科学课程的编程工作中遇到了麻烦.该计划是添加罗马数字.我不知道如何开始实际添加罗马数字的代码并输出两个数字的总和:这是我目前为主程序的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* Class RomanNumeralCalculator - write a description of the class here
*
* @author (your name)
* @version (a version number)
*/
public class RomanNumeralCalculator extends JFrame
{
public static JPanel panel1, panel2, panel3, panel4;
public static JLabel main1, main2, label1, label2,label3,label4,image;
public static JTextField number1, number2;
public static JTextArea output;
public static JButton calculate,exit;
public static String input="Enter";
public static int position;
String num="";
public RomanNumeralCalculator()
{
super ("Roman Numeral Calculator"); …Run Code Online (Sandbox Code Playgroud) 我想对皇室名字进行排序。对字母表的第一偏好。如果两个名字相同,那么我想按罗马数字排序。例如,如果输入是:King III、King II、Queen IX。(因为 1st 2 个字符串相同,它们需要按附加的罗马数字排序)所以预期输出:King II、King III、Queen IX。
我尝试将罗马数字存储在哈希图中并编写一个函数,将给定数组中的罗马数字替换为 King 2、King 3、Queen 9,然后尝试排序但无法正确实现。任何人都可以帮助我吗?
因此,我正在构建一个示例项目,该项目使用罗马数字并将其转换为以10为基数的数字。我试图使它起作用,但没有实现我的目标。有谁知道如何做到这一点?我将罗马数字加到10以下以供参考。谢谢!
1-I 2-II 3-III 4-IV 5-V 6-VI 7-VII 8-VIII 9-IX 10-X